summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergio Ahumada <sergio.ahumada@digia.com>2013-03-20 23:30:31 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-20 23:30:31 +0100
commite5a11fbb3251a98fafd6bebf0b6fc366acb19088 (patch)
tree8e1bd6704205307e0a23484221ea1bb67a9f411e
parent0646d1131b4bc65cdd9af29f4ce00fdd2398a3df (diff)
parent76c0be34cd4ff4564693162fa7528463e23ce9d8 (diff)
Merge "Merge branch 'dev' into stable" into refs/staging/stable
-rw-r--r--.gitignore2
-rwxr-xr-xbin/syncqt30
-rw-r--r--config.tests/arch/arch.pro1
-rw-r--r--config.tests/arch/arch_host.pro2
-rw-r--r--config.tests/qpa/linuxfb/linuxfb.cpp1
-rwxr-xr-xconfig.tests/unix/arch.test28
-rw-r--r--config.tests/unix/clock-monotonic/clock-monotonic.cpp2
-rwxr-xr-xconfig.tests/unix/compile.test9
-rw-r--r--config.tests/unix/eventfd/eventfd.pro3
-rw-r--r--config.tests/unix/eventfd/main.cpp (renamed from mkspecs/unsupported/linux-android-armeabi-g++/qplatformdefs.h)15
-rw-r--r--config.tests/unix/getaddrinfo/getaddrinfotest.cpp2
-rwxr-xr-xconfigure535
-rw-r--r--dist/changes-5.1.0129
-rw-r--r--doc/global/qt-cpp-ignore.qdocconf2
-rw-r--r--doc/global/template/style/offline.css41
-rw-r--r--doc/global/template/style/online.css42
-rw-r--r--doc/src/examples/customtypesending.qdoc2
-rw-r--r--examples/dbus/complexpingpong/complexping.cpp4
-rw-r--r--examples/dbus/complexpingpong/complexpong.cpp4
-rw-r--r--examples/dbus/pingpong/pong.cpp4
-rw-r--r--examples/ipc/ipc.pro2
-rw-r--r--examples/ipc/sharedmemory/dialog.cpp2
-rw-r--r--examples/network/doc/src/blockingfortuneclient.qdoc4
-rw-r--r--examples/network/doc/src/threadedfortuneserver.qdoc8
-rw-r--r--examples/network/http/httpwindow.cpp4
-rw-r--r--examples/network/network.pro2
-rw-r--r--examples/network/securesocketclient/sslclient.h2
-rw-r--r--examples/network/torrent/addtorrentdialog.cpp4
-rw-r--r--examples/network/torrent/bencodeparser.cpp200
-rw-r--r--examples/network/torrent/bencodeparser.h2
-rw-r--r--examples/network/torrent/filemanager.h2
-rw-r--r--examples/network/torrent/mainwindow.cpp2
-rw-r--r--examples/network/torrent/mainwindow.h6
-rw-r--r--examples/network/torrent/metainfo.h2
-rw-r--r--examples/network/torrent/peerwireclient.h2
-rw-r--r--examples/network/torrent/torrentclient.cpp10
-rw-r--r--examples/network/torrent/torrentclient.h4
-rw-r--r--examples/network/torrent/trackerclient.h4
-rw-r--r--examples/opengl/cube/geometryengine.cpp2
-rw-r--r--examples/opengl/cube/mainwidget.cpp2
-rw-r--r--examples/opengl/grabber/glwidget.cpp2
-rw-r--r--examples/opengl/grabber/glwidget.h2
-rw-r--r--examples/opengl/hellogl_es2/bubble.cpp2
-rw-r--r--examples/opengl/hellogl_es2/glwidget.cpp4
-rw-r--r--examples/opengl/hellogl_es2/glwidget.h2
-rw-r--r--examples/opengl/hellogl_es2/mainwindow.cpp2
-rw-r--r--examples/opengl/overpainting/bubble.cpp2
-rw-r--r--examples/opengl/paintedwindow/paintedwindow.cpp2
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.cpp11
-rw-r--r--examples/qtconcurrent/progressdialog/main.cpp4
-rw-r--r--examples/qtestlib/tutorial5/benchmarking.cpp4
-rw-r--r--examples/sql/doc/src/querymodel.qdoc2
-rw-r--r--examples/sql/doc/src/relationaltablemodel.qdoc2
-rw-r--r--examples/sql/doc/src/tablemodel.qdoc2
-rw-r--r--examples/threads/queuedcustomtype/main.cpp2
-rw-r--r--examples/tools/doc/contiguouscache.qdoc2
-rw-r--r--examples/tools/doc/src/customtype.qdoc2
-rw-r--r--examples/touch/fingerpaint/scribblearea.cpp2
-rw-r--r--examples/touch/pinchzoom/mouse.cpp2
-rw-r--r--examples/widgets/animation/appchooser/main.cpp2
-rw-r--r--examples/widgets/animation/easing/window.h4
-rw-r--r--examples/widgets/animation/stickman/animation.cpp18
-rw-r--r--examples/widgets/animation/stickman/lifecycle.cpp20
-rw-r--r--examples/widgets/animation/stickman/node.cpp4
-rw-r--r--examples/widgets/animation/stickman/stickman.h4
-rw-r--r--examples/widgets/animation/sub-attaq/boat_p.h3
-rw-r--r--examples/widgets/animation/sub-attaq/qanimationstate.h4
-rw-r--r--examples/widgets/animation/sub-attaq/states.cpp4
-rw-r--r--examples/widgets/animation/sub-attaq/states.h7
-rw-r--r--examples/widgets/dialogs/classwizard/classwizard.h2
-rw-r--r--examples/widgets/dialogs/classwizard/main.cpp2
-rw-r--r--examples/widgets/dialogs/dialogs.pro1
-rw-r--r--examples/widgets/dialogs/licensewizard/licensewizard.cpp2
-rw-r--r--examples/widgets/dialogs/sipdialog/dialog.cpp2
-rw-r--r--examples/widgets/doc/src/addressbook-fr.qdoc48
-rw-r--r--examples/widgets/doc/src/addressbook-tutorial.qdoc6
-rw-r--r--examples/widgets/doc/src/addressbook.qdoc2
-rw-r--r--examples/widgets/doc/src/codeeditor.qdoc12
-rw-r--r--examples/widgets/doc/src/coloreditorfactory.qdoc20
-rw-r--r--examples/widgets/doc/src/diagramscene.qdoc232
-rw-r--r--examples/widgets/doc/src/dockwidgets.qdoc4
-rw-r--r--examples/widgets/doc/src/easing.qdoc2
-rw-r--r--examples/widgets/doc/src/echoplugin.qdoc18
-rw-r--r--examples/widgets/doc/src/fetchmore.qdoc2
-rw-r--r--examples/widgets/doc/src/flowlayout.qdoc90
-rw-r--r--examples/widgets/doc/src/fontsampler.qdoc2
-rw-r--r--examples/widgets/doc/src/fridgemagnets.qdoc2
-rw-r--r--examples/widgets/doc/src/i18n.qdoc4
-rw-r--r--examples/widgets/doc/src/mdi.qdoc2
-rw-r--r--examples/widgets/doc/src/moveblocks.qdoc4
-rw-r--r--examples/widgets/doc/src/pixelator.qdoc2
-rw-r--r--examples/widgets/doc/src/recentfiles.qdoc2
-rw-r--r--examples/widgets/doc/src/regexp.qdoc2
-rw-r--r--examples/widgets/doc/src/rogue.qdoc4
-rw-r--r--examples/widgets/doc/src/sdi.qdoc2
-rw-r--r--examples/widgets/doc/src/settingseditor.qdoc2
-rw-r--r--examples/widgets/doc/src/simplewidgetmapper.qdoc2
-rw-r--r--examples/widgets/doc/src/spinboxes.qdoc2
-rw-r--r--examples/widgets/doc/src/standarddialogs.qdoc2
-rw-r--r--examples/widgets/doc/src/stardelegate.qdoc2
-rw-r--r--examples/widgets/doc/src/styleplugin.qdoc4
-rw-r--r--examples/widgets/doc/src/stylesheet.qdoc2
-rw-r--r--examples/widgets/doc/src/sub-attaq.qdoc2
-rw-r--r--examples/widgets/doc/src/tablet.qdoc46
-rw-r--r--examples/widgets/doc/src/tetrix.qdoc2
-rw-r--r--examples/widgets/doc/src/undo.qdoc2
-rw-r--r--examples/widgets/doc/src/undoframework.qdoc46
-rw-r--r--examples/widgets/draganddrop/draggableicons/dragwidget.cpp4
-rw-r--r--examples/widgets/draganddrop/dropsite/droparea.cpp4
-rw-r--r--examples/widgets/draganddrop/dropsite/dropsitewindow.cpp8
-rw-r--r--examples/widgets/graphicsview/boxes/scene.cpp2
-rw-r--r--examples/widgets/graphicsview/chip/main.cpp2
-rw-r--r--examples/widgets/graphicsview/chip/mainwindow.cpp2
-rw-r--r--examples/widgets/graphicsview/chip/mainwindow.h4
-rw-r--r--examples/widgets/graphicsview/chip/view.cpp2
-rw-r--r--examples/widgets/graphicsview/collidingmice/mouse.cpp2
-rw-r--r--examples/widgets/graphicsview/dragdroprobot/robot.cpp2
-rw-r--r--examples/widgets/graphicsview/dragdroprobot/robot.h2
-rw-r--r--examples/widgets/graphicsview/elasticnodes/edge.cpp2
-rw-r--r--examples/widgets/graphicsview/elasticnodes/edge.h4
-rw-r--r--examples/widgets/graphicsview/elasticnodes/node.h2
-rw-r--r--examples/widgets/graphicsview/embeddeddialogs/customproxy.cpp6
-rw-r--r--examples/widgets/graphicsview/embeddeddialogs/customproxy.h2
-rw-r--r--examples/widgets/itemviews/addressbook/adddialog.cpp16
-rw-r--r--examples/widgets/itemviews/addressbook/adddialog.h2
-rw-r--r--examples/widgets/itemviews/addressbook/addresswidget.cpp20
-rw-r--r--examples/widgets/itemviews/addressbook/mainwindow.cpp6
-rw-r--r--examples/widgets/itemviews/addressbook/newaddresstab.cpp12
-rw-r--r--examples/widgets/itemviews/addressbook/newaddresstab.h4
-rw-r--r--examples/widgets/itemviews/addressbook/tablemodel.h2
-rw-r--r--examples/widgets/itemviews/combowidgetmapper/window.cpp4
-rw-r--r--examples/widgets/itemviews/fetchmore/filelistmodel.cpp6
-rw-r--r--examples/widgets/itemviews/fetchmore/window.cpp2
-rw-r--r--examples/widgets/itemviews/pixelator/mainwindow.cpp4
-rw-r--r--examples/widgets/itemviews/simplewidgetmapper/window.cpp2
-rw-r--r--examples/widgets/itemviews/spreadsheet/spreadsheet.cpp2
-rw-r--r--examples/widgets/itemviews/spreadsheet/spreadsheet.h2
-rw-r--r--examples/widgets/painting/deform/pathdeform.cpp4
-rw-r--r--examples/widgets/painting/fontsampler/mainwindow.cpp2
-rw-r--r--examples/widgets/painting/fontsampler/mainwindow.h4
-rw-r--r--examples/widgets/painting/gradients/gradients.cpp2
-rw-r--r--examples/widgets/painting/pathstroke/pathstroke.cpp4
-rw-r--r--examples/widgets/painting/shared/shared.pri2
-rw-r--r--examples/widgets/richtext/orderform/mainwindow.cpp2
-rw-r--r--examples/widgets/richtext/textedit/textedit.cpp6
-rw-r--r--examples/widgets/richtext/textedit/textedit.qdoc4
-rw-r--r--examples/widgets/scroller/graphicsview/main.cpp2
-rw-r--r--examples/widgets/statemachine/factorial/main.cpp2
-rw-r--r--examples/widgets/statemachine/rogue/window.cpp8
-rw-r--r--examples/widgets/tools/completer/mainwindow.cpp2
-rw-r--r--examples/widgets/tools/customcompleter/mainwindow.cpp2
-rw-r--r--examples/widgets/tools/customcompleter/textedit.cpp6
-rw-r--r--examples/widgets/tools/i18n/languagechooser.cpp12
-rw-r--r--examples/widgets/tools/i18n/languagechooser.h3
-rw-r--r--examples/widgets/tools/i18n/main.cpp4
-rw-r--r--examples/widgets/tools/plugandpaint/mainwindow.cpp2
-rw-r--r--examples/widgets/tools/plugandpaint/plugindialog.cpp2
-rw-r--r--examples/widgets/tools/undoframework/diagramscene.cpp4
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part1/addressbook.cpp2
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part2/addressbook.cpp10
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part3/addressbook.cpp16
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part3/addressbook.h6
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part4/addressbook.cpp24
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part4/addressbook.h8
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part5/addressbook.cpp22
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part5/addressbook.h12
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part6/addressbook.cpp24
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part6/addressbook.h8
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part7/addressbook.cpp24
-rw-r--r--examples/widgets/tutorials/addressbook-fr/part7/addressbook.h6
-rw-r--r--examples/widgets/tutorials/addressbook/part1/addressbook.cpp2
-rw-r--r--examples/widgets/tutorials/addressbook/part2/addressbook.cpp10
-rw-r--r--examples/widgets/tutorials/addressbook/part3/addressbook.cpp16
-rw-r--r--examples/widgets/tutorials/addressbook/part3/addressbook.h6
-rw-r--r--examples/widgets/tutorials/addressbook/part4/addressbook.cpp24
-rw-r--r--examples/widgets/tutorials/addressbook/part4/addressbook.h8
-rw-r--r--examples/widgets/tutorials/addressbook/part5/addressbook.cpp22
-rw-r--r--examples/widgets/tutorials/addressbook/part5/addressbook.h12
-rw-r--r--examples/widgets/tutorials/addressbook/part6/addressbook.cpp24
-rw-r--r--examples/widgets/tutorials/addressbook/part6/addressbook.h8
-rw-r--r--examples/widgets/tutorials/addressbook/part7/addressbook.cpp24
-rw-r--r--examples/widgets/tutorials/addressbook/part7/addressbook.h6
-rw-r--r--examples/widgets/tutorials/gettingStarted/gsQt/part3/main.cpp4
-rw-r--r--examples/widgets/tutorials/modelview/5_edit/mymodel.cpp2
-rw-r--r--examples/widgets/tutorials/modelview/7_selections/mainwindow.cpp2
-rw-r--r--examples/widgets/widgets.pro3
-rw-r--r--examples/widgets/widgets/calculator/button.cpp2
-rw-r--r--examples/widgets/widgets/codeeditor/codeeditor.cpp4
-rw-r--r--examples/widgets/widgets/imageviewer/imageviewer.cpp2
-rw-r--r--examples/widgets/widgets/lineedits/window.cpp5
-rw-r--r--examples/widgets/widgets/scribble/scribblearea.cpp4
-rw-r--r--examples/widgets/widgets/styles/widgetgallery.cpp2
-rw-r--r--examples/widgets/widgets/styles/widgetgallery.h2
-rw-r--r--examples/widgets/windowcontainer/windowcontainer.cpp170
-rw-r--r--examples/widgets/windowcontainer/windowcontainer.pro9
-rw-r--r--examples/xml/xml.pro4
-rw-r--r--mkspecs/aix-g++-64/qmake.conf1
-rw-r--r--mkspecs/aix-g++/qmake.conf1
-rw-r--r--mkspecs/aix-xlc-64/qmake.conf1
-rw-r--r--mkspecs/aix-xlc/qmake.conf1
-rw-r--r--mkspecs/android-g++/qmake.conf178
-rw-r--r--mkspecs/android-g++/qplatformdefs.h187
-rw-r--r--mkspecs/common/clang-mac.conf2
-rw-r--r--mkspecs/common/gcc-base-ios.conf33
-rw-r--r--mkspecs/common/gcc-base-mac.conf (renamed from mkspecs/common/gcc-base-macx.conf)2
-rw-r--r--mkspecs/common/gcc-base.conf7
-rw-r--r--mkspecs/common/ios.conf17
-rw-r--r--mkspecs/common/ios/arch.conf84
-rw-r--r--mkspecs/common/ios/clang.conf42
-rw-r--r--mkspecs/common/ios/g++.conf21
-rw-r--r--mkspecs/common/ios/llvm.conf31
-rw-r--r--mkspecs/common/ios/qmake.conf61
-rw-r--r--mkspecs/common/ios/versions.conf184
-rw-r--r--mkspecs/common/linux-android.conf2
-rw-r--r--mkspecs/common/linux.conf5
-rw-r--r--mkspecs/common/mac-clang-libc++-minimum-version.conf5
-rw-r--r--mkspecs/common/mac-minimum-version.conf4
-rw-r--r--mkspecs/common/mac.conf35
-rw-r--r--mkspecs/common/mac/qplatformdefs.h6
-rw-r--r--mkspecs/common/macx.conf8
-rw-r--r--mkspecs/common/wince/qmake.conf4
-rw-r--r--mkspecs/common/xcode.conf17
-rw-r--r--mkspecs/cygwin-g++/qmake.conf111
-rw-r--r--mkspecs/darwin-g++/qmake.conf1
-rw-r--r--mkspecs/devices/blackberry-playbook-armv7le-qcc/qmake.conf1
-rw-r--r--mkspecs/devices/blackberry-playbook-x86-qcc/qmake.conf1
-rw-r--r--mkspecs/features/android.prf14
-rw-r--r--mkspecs/features/configure.prf3
-rw-r--r--mkspecs/features/create_cmake.prf2
-rw-r--r--mkspecs/features/default_post.prf8
-rw-r--r--mkspecs/features/ios/default_post.prf69
-rw-r--r--mkspecs/features/ios/default_pre.prf4
-rw-r--r--mkspecs/features/java.prf61
-rw-r--r--mkspecs/features/mac/sdk.prf59
-rw-r--r--mkspecs/features/qml_plugin.prf24
-rw-r--r--mkspecs/features/qmltestcase.prf2
-rw-r--r--mkspecs/features/qpa/basicunixfontdatabase.prf2
-rw-r--r--mkspecs/features/qpa/genericunixfontdatabase.prf2
-rw-r--r--mkspecs/features/qt_android_deps.prf53
-rw-r--r--mkspecs/features/qt_build_config.prf3
-rw-r--r--mkspecs/features/qt_common.prf54
-rw-r--r--mkspecs/features/qt_module.prf21
-rw-r--r--mkspecs/features/qt_module_headers.prf15
-rw-r--r--mkspecs/features/qt_module_pris.prf2
-rw-r--r--mkspecs/features/qt_plugin.prf5
-rw-r--r--mkspecs/features/qt_tool.prf14
-rw-r--r--mkspecs/features/resolve_target.prf2
-rw-r--r--mkspecs/features/testcase.prf2
-rw-r--r--mkspecs/features/unix/opengl.prf2
-rw-r--r--mkspecs/features/unix/separate_debug_info.prf13
-rw-r--r--mkspecs/features/win32/opengl.prf1
-rw-r--r--mkspecs/freebsd-g++/qmake.conf1
-rw-r--r--mkspecs/freebsd-g++46/qmake.conf1
-rw-r--r--mkspecs/freebsd-icc/qmake.conf1
-rw-r--r--mkspecs/hpux-acc-64/qmake.conf1
-rw-r--r--mkspecs/hpux-acc-o64/qmake.conf171
-rw-r--r--mkspecs/hpux-acc/qmake.conf1
-rw-r--r--mkspecs/hpux-g++-64/qmake.conf115
-rw-r--r--mkspecs/hpux-g++/qmake.conf1
-rw-r--r--mkspecs/hpuxi-acc-32/qmake.conf1
-rw-r--r--mkspecs/hpuxi-acc-64/qmake.conf175
-rw-r--r--mkspecs/hpuxi-g++-64/qmake.conf1
-rw-r--r--mkspecs/hurd-g++/qmake.conf5
-rw-r--r--mkspecs/irix-cc-64/qmake.conf1
-rw-r--r--mkspecs/irix-cc/qmake.conf1
-rw-r--r--mkspecs/irix-g++-64/qmake.conf1
-rw-r--r--mkspecs/irix-g++/qmake.conf1
-rw-r--r--mkspecs/linux-cxx/qmake.conf1
-rw-r--r--mkspecs/linux-icc/qmake.conf3
-rw-r--r--mkspecs/linux-kcc/qmake.conf1
-rw-r--r--mkspecs/linux-pgcc/qmake.conf1
-rw-r--r--mkspecs/lynxos-g++/qmake.conf1
-rw-r--r--mkspecs/macx-clang-32/qmake.conf7
-rw-r--r--mkspecs/macx-clang-libc++-32/qmake.conf7
-rw-r--r--mkspecs/macx-clang-libc++/qmake.conf7
-rw-r--r--mkspecs/macx-clang/qmake.conf7
-rw-r--r--mkspecs/macx-g++-32/qmake.conf7
-rw-r--r--mkspecs/macx-g++/qmake.conf7
-rw-r--r--mkspecs/macx-g++40/qmake.conf7
-rw-r--r--mkspecs/macx-g++42/qmake.conf7
-rw-r--r--mkspecs/macx-icc/qmake.conf82
-rw-r--r--mkspecs/macx-llvm/qmake.conf9
-rw-r--r--mkspecs/macx-xcode/qmake.conf15
-rw-r--r--mkspecs/netbsd-g++/qmake.conf1
-rw-r--r--mkspecs/openbsd-g++/qmake.conf1
-rw-r--r--mkspecs/sco-cc/qmake.conf1
-rw-r--r--mkspecs/sco-g++/qmake.conf1
-rw-r--r--mkspecs/solaris-cc-64/qmake.conf1
-rw-r--r--mkspecs/solaris-cc/qmake.conf1
-rw-r--r--mkspecs/solaris-g++-64/qmake.conf1
-rw-r--r--mkspecs/solaris-g++/qmake.conf1
-rw-r--r--mkspecs/tru64-cxx/qmake.conf1
-rw-r--r--mkspecs/tru64-g++/qmake.conf1
-rw-r--r--mkspecs/unixware-cc/qmake.conf1
-rw-r--r--mkspecs/unixware-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/android-g++/qeglfshooks_surfaceflinger.cpp120
-rw-r--r--mkspecs/unsupported/android-g++/qmake.conf15
-rw-r--r--mkspecs/unsupported/linux-android-armeabi-g++/qmake.conf14
-rw-r--r--mkspecs/unsupported/linux-android-armeabi-v7a-g++/qmake.conf14
-rw-r--r--mkspecs/unsupported/linux-android-x86-g++/qmake.conf14
-rw-r--r--mkspecs/unsupported/linux-host-g++/qmake.conf9
-rwxr-xr-xmkspecs/unsupported/macx-ios-clang/Info.plist.app20
-rw-r--r--mkspecs/unsupported/macx-ios-clang/Info.plist.lib18
-rw-r--r--mkspecs/unsupported/macx-ios-clang/qmake.conf28
-rw-r--r--mkspecs/unsupported/macx-ios-clang/qplatformdefs.h (renamed from mkspecs/unsupported/macx-iosdevice-clang-legacy/qplatformdefs.h)2
-rw-r--r--mkspecs/unsupported/macx-iosdevice-clang-legacy/qmake.conf35
-rw-r--r--mkspecs/unsupported/macx-iosdevice-clang/qmake.conf35
-rw-r--r--mkspecs/unsupported/macx-iosdevice-g++-legacy/qmake.conf35
-rw-r--r--mkspecs/unsupported/macx-iosdevice-g++/qmake.conf35
-rw-r--r--mkspecs/unsupported/macx-iosdevice-g++/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/macx-iosdevice-llvm-legacy/qmake.conf35
-rw-r--r--mkspecs/unsupported/macx-iosdevice-llvm-legacy/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/macx-iosdevice-llvm/qmake.conf35
-rw-r--r--mkspecs/unsupported/macx-iosdevice-llvm/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/macx-iossimulator-clang-legacy/qmake.conf6
-rw-r--r--mkspecs/unsupported/macx-iossimulator-clang-legacy/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/macx-iossimulator-clang/qmake.conf6
-rw-r--r--mkspecs/unsupported/macx-iossimulator-clang/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/macx-iossimulator-g++-legacy/qmake.conf33
-rw-r--r--mkspecs/unsupported/macx-iossimulator-g++-legacy/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/macx-iossimulator-g++/qmake.conf33
-rw-r--r--mkspecs/unsupported/macx-iossimulator-g++/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/macx-iossimulator-llvm-legacy/qmake.conf33
-rw-r--r--mkspecs/unsupported/macx-iossimulator-llvm-legacy/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/macx-iossimulator-llvm/qmake.conf33
-rw-r--r--mkspecs/unsupported/macx-iossimulator-llvm/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/qnx-X11-g++/qmake.conf1
-rw-r--r--mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf1
-rw-r--r--mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf1
-rw-r--r--mkspecs/win32-g++/qplatformdefs.h20
-rw-r--r--mkspecs/win32-icc/qmake.conf91
-rw-r--r--mkspecs/wince50standard-x86-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wince60standard-armv4i-msvc2005/qmake.conf4
-rw-r--r--mkspecs/wincewm50pocket-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wincewm50smart-msvc2005/qmake.conf4
-rw-r--r--mkspecs/wincewm60professional-msvc2005/qmake.conf8
-rw-r--r--mkspecs/wincewm60standard-msvc2005/qmake.conf4
-rw-r--r--qmake/Makefile.unix78
-rw-r--r--qmake/Makefile.win326
-rw-r--r--qmake/Makefile.win32-g++160
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp648
-rw-r--r--qmake/generators/makefile.cpp9
-rw-r--r--qmake/generators/makefile.h2
-rw-r--r--qmake/generators/unix/unixmake.cpp19
-rw-r--r--qmake/generators/unix/unixmake2.cpp21
-rw-r--r--qmake/generators/win32/mingw_make.cpp4
-rw-r--r--qmake/generators/win32/mingw_make.h2
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp9
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp4
-rw-r--r--qmake/library/qmakebuiltins.cpp5
-rw-r--r--qmake/library/qmakeevaluator.cpp73
-rw-r--r--qmake/library/qmakeevaluator_p.h1
-rw-r--r--qmake/library/qmakeglobals.cpp1
-rw-r--r--qmake/library/qmakeparser.cpp29
-rw-r--r--qmake/main.cpp5
-rw-r--r--qmake/qmake.pri1
-rw-r--r--src/3rdparty/angle/include/KHR/khrplatform.h3
-rw-r--r--src/3rdparty/angle/src/libEGL/main.cpp58
-rw-r--r--src/3rdparty/angle/src/libGLESv2/main.cpp32
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-arabic.c12
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-gpos.c9
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-gsub.c6
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp5
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-myanmar.c3
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shaper-private.h2
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp2
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-tibetan.c3
-rw-r--r--src/3rdparty/pcre.pri2
-rw-r--r--src/3rdparty/pcre/config.h4
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-32-rvk.macros555
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-32.macros26
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-64.macros728
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-int-set.h6
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-interface.h46
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-opt32-settings.h4
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-opt32.c524
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-opt64-settings.h7
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-opt64.c508
-rwxr-xr-xsrc/3rdparty/sha3/KeccakF-1600-unrolling.macros124
-rwxr-xr-xsrc/3rdparty/sha3/KeccakNISTInterface.c82
-rwxr-xr-xsrc/3rdparty/sha3/KeccakNISTInterface.h70
-rwxr-xr-xsrc/3rdparty/sha3/KeccakSponge.c266
-rwxr-xr-xsrc/3rdparty/sha3/KeccakSponge.h76
-rwxr-xr-xsrc/3rdparty/sha3/brg_endian.h142
-rw-r--r--src/android/android.pro2
-rw-r--r--src/android/jar/AndroidManifest.xml4
-rw-r--r--src/android/jar/jar.pro19
-rw-r--r--src/android/jar/res/values/strings.xml4
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java714
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtEditText.java97
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtInputConnection.java244
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtLayout.java201
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java577
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNativeLibrariesDir.java61
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtSurface.java206
-rw-r--r--src/android/java/AndroidManifest.xml25
-rw-r--r--src/android/java/java.pro8
-rw-r--r--src/android/java/res/layout/splash.xml13
-rw-r--r--src/android/java/res/values-de/strings.xml6
-rw-r--r--src/android/java/res/values-el/strings.xml6
-rw-r--r--src/android/java/res/values-es/strings.xml6
-rw-r--r--src/android/java/res/values-et/strings.xml6
-rw-r--r--src/android/java/res/values-fa/strings.xml6
-rw-r--r--src/android/java/res/values-fr/strings.xml6
-rw-r--r--src/android/java/res/values-id/strings.xml6
-rw-r--r--src/android/java/res/values-it/strings.xml6
-rw-r--r--src/android/java/res/values-ja/strings.xml6
-rw-r--r--src/android/java/res/values-ms/strings.xml6
-rw-r--r--src/android/java/res/values-nb/strings.xml6
-rw-r--r--src/android/java/res/values-nl/strings.xml6
-rw-r--r--src/android/java/res/values-pl/strings.xml6
-rw-r--r--src/android/java/res/values-pt-rBR/strings.xml6
-rw-r--r--src/android/java/res/values-ro/strings.xml6
-rw-r--r--src/android/java/res/values-rs/strings.xml6
-rw-r--r--src/android/java/res/values-ru/strings.xml6
-rw-r--r--src/android/java/res/values-zh-rCN/strings.xml6
-rw-r--r--src/android/java/res/values-zh-rTW/strings.xml6
-rw-r--r--src/android/java/res/values/libs.xml8
-rw-r--r--src/android/java/res/values/strings.xml7
-rw-r--r--src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl49
-rw-r--r--src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl53
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java1278
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java149
-rw-r--r--src/android/java/version.xml8
-rw-r--r--src/angle/angle.pro17
-rw-r--r--src/angle/patches/0001-Make-it-possible-to-link-ANGLE-statically-for-single.patch218
-rw-r--r--src/angle/src/common/common.pri2
-rw-r--r--src/concurrent/qtconcurrent_global.h2
-rw-r--r--src/concurrent/qtconcurrentcompilertest.h2
-rw-r--r--src/concurrent/qtconcurrentexception.h2
-rw-r--r--src/concurrent/qtconcurrentfilter.cpp2
-rw-r--r--src/concurrent/qtconcurrentfilter.h2
-rw-r--r--src/concurrent/qtconcurrentfilterkernel.h2
-rw-r--r--src/concurrent/qtconcurrentfunctionwrappers.h2
-rw-r--r--src/concurrent/qtconcurrentiteratekernel.h2
-rw-r--r--src/concurrent/qtconcurrentmap.cpp6
-rw-r--r--src/concurrent/qtconcurrentmap.h2
-rw-r--r--src/concurrent/qtconcurrentmapkernel.h4
-rw-r--r--src/concurrent/qtconcurrentmedian.h2
-rw-r--r--src/concurrent/qtconcurrentreducekernel.h4
-rw-r--r--src/concurrent/qtconcurrentrun.cpp52
-rw-r--r--src/concurrent/qtconcurrentrun.h2
-rw-r--r--src/concurrent/qtconcurrentrunbase.h2
-rw-r--r--src/concurrent/qtconcurrentstoredfunctioncall.h2
-rw-r--r--src/concurrent/qtconcurrentthreadengine.h2
-rw-r--r--src/corelib/Qt5Config.cmake.in43
-rw-r--r--src/corelib/animation/qabstractanimation.h4
-rw-r--r--src/corelib/animation/qanimationgroup.h4
-rw-r--r--src/corelib/animation/qparallelanimationgroup.h4
-rw-r--r--src/corelib/animation/qpauseanimation.h4
-rw-r--r--src/corelib/animation/qpropertyanimation.h4
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.cpp4
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.h4
-rw-r--r--src/corelib/animation/qvariantanimation.cpp4
-rw-r--r--src/corelib/animation/qvariantanimation.h4
-rw-r--r--src/corelib/arch/qatomic_alpha.h13
-rw-r--r--src/corelib/arch/qatomic_armv5.h15
-rw-r--r--src/corelib/arch/qatomic_armv6.h7
-rw-r--r--src/corelib/arch/qatomic_armv7.h5
-rw-r--r--src/corelib/arch/qatomic_bfin.h13
-rw-r--r--src/corelib/arch/qatomic_bootstrap.h7
-rw-r--r--src/corelib/arch/qatomic_cxx11.h5
-rw-r--r--src/corelib/arch/qatomic_gcc.h6
-rw-r--r--src/corelib/arch/qatomic_ia64.h41
-rw-r--r--src/corelib/arch/qatomic_integrity.h13
-rw-r--r--src/corelib/arch/qatomic_mips.h7
-rw-r--r--src/corelib/arch/qatomic_msvc.h6
-rw-r--r--src/corelib/arch/qatomic_power.h13
-rw-r--r--src/corelib/arch/qatomic_s390.h13
-rw-r--r--src/corelib/arch/qatomic_sh4a.h7
-rw-r--r--src/corelib/arch/qatomic_sparc.h13
-rw-r--r--src/corelib/arch/qatomic_unix.h6
-rw-r--r--src/corelib/arch/qatomic_vxworks.h18
-rw-r--r--src/corelib/arch/qatomic_x86.h7
-rw-r--r--src/corelib/arch/sparc/arch.pri2
-rw-r--r--src/corelib/arch/sparc/qatomic_sparc.cpp2
-rw-r--r--src/corelib/codecs/qeuckrcodec.cpp4
-rw-r--r--src/corelib/codecs/qiconvcodec.cpp2
-rw-r--r--src/corelib/codecs/qicucodec.cpp3
-rw-r--r--src/corelib/codecs/qjpunicode.cpp6
-rw-r--r--src/corelib/codecs/qtextcodec.cpp34
-rw-r--r--src/corelib/codecs/qtextcodec.h4
-rw-r--r--src/corelib/codecs/qtextcodec_p.h2
-rw-r--r--src/corelib/corelib.pro19
-rw-r--r--src/corelib/doc/snippets/code/doc_src_properties.cpp21
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_global_qglobal.cpp4
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp34
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_kernel_qcoreapplication.cpp7
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_kernel_qmath.cpp63
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp2
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_tools_qbytearray.cpp2
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_tools_qpoint.cpp14
-rw-r--r--src/corelib/doc/snippets/fileinfo/main.cpp6
-rw-r--r--src/corelib/doc/snippets/qmessageauthenticationcode/main.cpp62
-rw-r--r--src/corelib/doc/snippets/qstring/main.cpp2
-rw-r--r--src/corelib/doc/snippets/sharedemployee/employee.h10
-rw-r--r--src/corelib/doc/snippets/signalmapper/filereader.cpp4
-rw-r--r--src/corelib/doc/snippets/statemachine/eventtest.cpp4
-rw-r--r--src/corelib/doc/snippets/statemachine/main4.cpp2
-rw-r--r--src/corelib/doc/snippets/streaming/main.cpp4
-rw-r--r--src/corelib/doc/snippets/timers/timers.cpp2
-rw-r--r--src/corelib/doc/src/objectmodel/object.qdoc4
-rw-r--r--src/corelib/doc/src/objectmodel/properties.qdoc32
-rw-r--r--src/corelib/doc/src/objectmodel/signalsandslots.qdoc4
-rw-r--r--src/corelib/global/global.pri2
-rw-r--r--src/corelib/global/qcompilerdetection.h8
-rw-r--r--src/corelib/global/qendian.h4
-rw-r--r--src/corelib/global/qfeatures.h5
-rw-r--r--src/corelib/global/qfeatures.txt15
-rw-r--r--src/corelib/global/qflags.h4
-rw-r--r--src/corelib/global/qglobal.cpp42
-rw-r--r--src/corelib/global/qglobal.h141
-rw-r--r--src/corelib/global/qglobalstatic.cpp524
-rw-r--r--src/corelib/global/qglobalstatic.h142
-rw-r--r--src/corelib/global/qisenum.h3
-rw-r--r--src/corelib/global/qlibraryinfo.h4
-rw-r--r--src/corelib/global/qlogging.cpp123
-rw-r--r--src/corelib/global/qlogging.h3
-rw-r--r--src/corelib/global/qnamespace.h29
-rw-r--r--src/corelib/global/qnamespace.qdoc56
-rw-r--r--src/corelib/global/qnumeric.h4
-rw-r--r--src/corelib/global/qprocessordetection.h5
-rw-r--r--src/corelib/global/qsysinfo.h3
-rw-r--r--src/corelib/global/qsystemdetection.h60
-rw-r--r--src/corelib/global/qt_windows.h5
-rw-r--r--src/corelib/global/qtypeinfo.h3
-rw-r--r--src/corelib/global/qtypetraits.h3
-rw-r--r--src/corelib/io/io.pri20
-rw-r--r--src/corelib/io/qabstractfileengine.cpp31
-rw-r--r--src/corelib/io/qabstractfileengine_p.h8
-rw-r--r--src/corelib/io/qbuffer.h4
-rw-r--r--src/corelib/io/qdatastream.cpp5
-rw-r--r--src/corelib/io/qdatastream.h9
-rw-r--r--src/corelib/io/qdebug.cpp73
-rw-r--r--src/corelib/io/qdebug.h16
-rw-r--r--src/corelib/io/qdir.h4
-rw-r--r--src/corelib/io/qdiriterator.h4
-rw-r--r--src/corelib/io/qfile.h4
-rw-r--r--src/corelib/io/qfiledevice.cpp2
-rw-r--r--src/corelib/io/qfiledevice.h4
-rw-r--r--src/corelib/io/qfileinfo.h4
-rw-r--r--src/corelib/io/qfilesystemengine.cpp3
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp18
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp2
-rw-r--r--src/corelib/io/qfilesystemwatcher.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_win.cpp2
-rw-r--r--src/corelib/io/qfsfileengine.cpp16
-rw-r--r--src/corelib/io/qfsfileengine_p.h3
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp23
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp29
-rw-r--r--src/corelib/io/qiodevice.cpp2
-rw-r--r--src/corelib/io/qiodevice.h5
-rw-r--r--src/corelib/io/qlockfile.cpp346
-rw-r--r--src/corelib/io/qlockfile.h91
-rw-r--r--src/corelib/io/qlockfile_p.h104
-rw-r--r--src/corelib/io/qlockfile_unix.cpp207
-rw-r--r--src/corelib/io/qlockfile_win.cpp138
-rw-r--r--src/corelib/io/qprocess.cpp96
-rw-r--r--src/corelib/io/qprocess.h10
-rw-r--r--src/corelib/io/qprocess_unix.cpp36
-rw-r--r--src/corelib/io/qresource.cpp9
-rw-r--r--src/corelib/io/qresource.h4
-rw-r--r--src/corelib/io/qresource_p.h2
-rw-r--r--src/corelib/io/qsavefile.cpp316
-rw-r--r--src/corelib/io/qsavefile.h90
-rw-r--r--src/corelib/io/qsavefile_p.h (renamed from src/widgets/styles/qmacstylepixmaps_mac_p.h)43
-rw-r--r--src/corelib/io/qsettings.cpp12
-rw-r--r--src/corelib/io/qsettings.h4
-rw-r--r--src/corelib/io/qsettings_win.cpp2
-rw-r--r--src/corelib/io/qstandardpaths.h6
-rw-r--r--src/corelib/io/qtemporarydir.cpp14
-rw-r--r--src/corelib/io/qtemporarydir.h4
-rw-r--r--src/corelib/io/qtemporaryfile.cpp60
-rw-r--r--src/corelib/io/qtemporaryfile.h6
-rw-r--r--src/corelib/io/qtemporaryfile_p.h103
-rw-r--r--src/corelib/io/qtextstream.cpp218
-rw-r--r--src/corelib/io/qtextstream.h5
-rw-r--r--src/corelib/io/qtextstream_p.h185
-rw-r--r--src/corelib/io/qtldurl.cpp18
-rw-r--r--src/corelib/io/qurl.cpp38
-rw-r--r--src/corelib/io/qurl.h7
-rw-r--r--src/corelib/io/qurlidna.cpp29
-rw-r--r--src/corelib/io/qurlquery.h4
-rw-r--r--src/corelib/io/qurltlds_p.h15867
-rw-r--r--src/corelib/io/qwindowspipereader_p.h4
-rw-r--r--src/corelib/io/qwindowspipewriter_p.h4
-rw-r--r--src/corelib/io/qwinoverlappedionotifier_p.h4
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.cpp44
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.h11
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.cpp9
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.h7
-rw-r--r--src/corelib/itemmodels/qidentityproxymodel.h4
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.h4
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.h4
-rw-r--r--src/corelib/itemmodels/qstringlistmodel.cpp4
-rw-r--r--src/corelib/itemmodels/qstringlistmodel.h4
-rw-r--r--src/corelib/json/qjsonarray.h4
-rw-r--r--src/corelib/json/qjsondocument.cpp39
-rw-r--r--src/corelib/json/qjsondocument.h17
-rw-r--r--src/corelib/json/qjsonobject.h4
-rw-r--r--src/corelib/json/qjsonvalue.h4
-rw-r--r--src/corelib/kernel/kernel.pri2
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.h4
-rw-r--r--src/corelib/kernel/qabstractnativeeventfilter.h4
-rw-r--r--src/corelib/kernel/qbasictimer.h4
-rw-r--r--src/corelib/kernel/qcore_mac_p.h14
-rw-r--r--src/corelib/kernel/qcore_unix.cpp21
-rw-r--r--src/corelib/kernel/qcore_unix_p.h54
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp230
-rw-r--r--src/corelib/kernel/qcoreapplication.h72
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h46
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp8
-rw-r--r--src/corelib/kernel/qcoreevent.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_blackberry.cpp18
-rw-r--r--src/corelib/kernel/qeventdispatcher_blackberry_p.h2
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp6
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp51
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix_p.h11
-rw-r--r--src/corelib/kernel/qeventloop.h4
-rw-r--r--src/corelib/kernel/qeventloop_p.h4
-rw-r--r--src/corelib/kernel/qfunctions_nacl.h8
-rw-r--r--src/corelib/kernel/qfunctions_p.h3
-rw-r--r--src/corelib/kernel/qfunctions_vxworks.cpp10
-rw-r--r--src/corelib/kernel/qfunctions_vxworks.h56
-rw-r--r--src/corelib/kernel/qfunctions_wince.h6
-rw-r--r--src/corelib/kernel/qmath.cpp87
-rw-r--r--src/corelib/kernel/qmath.h28
-rw-r--r--src/corelib/kernel/qmath.qdoc6
-rw-r--r--src/corelib/kernel/qmetaobject.cpp10
-rw-r--r--src/corelib/kernel/qmetaobject.h4
-rw-r--r--src/corelib/kernel/qmetatype.cpp8
-rw-r--r--src/corelib/kernel/qmetatype.h37
-rw-r--r--src/corelib/kernel/qmetatype_p.h2
-rw-r--r--src/corelib/kernel/qmimedata.h4
-rw-r--r--src/corelib/kernel/qobject.cpp79
-rw-r--r--src/corelib/kernel/qobject.h42
-rw-r--r--src/corelib/kernel/qobject_impl.h7
-rw-r--r--src/corelib/kernel/qobject_p.h77
-rw-r--r--src/corelib/kernel/qobjectcleanuphandler.h4
-rw-r--r--src/corelib/kernel/qobjectdefs.h4
-rw-r--r--src/corelib/kernel/qobjectdefs_impl.h45
-rw-r--r--src/corelib/kernel/qpointer.h100
-rw-r--r--src/corelib/kernel/qsharedmemory.h4
-rw-r--r--src/corelib/kernel/qsharedmemory_p.h2
-rw-r--r--src/corelib/kernel/qsharedmemory_unix.cpp3
-rw-r--r--src/corelib/kernel/qsignalmapper.h4
-rw-r--r--src/corelib/kernel/qsocketnotifier.h4
-rw-r--r--src/corelib/kernel/qsystemerror_p.h6
-rw-r--r--src/corelib/kernel/qsystemsemaphore.h4
-rw-r--r--src/corelib/kernel/qsystemsemaphore_win.cpp2
-rw-r--r--src/corelib/kernel/qtimer.h6
-rw-r--r--src/corelib/kernel/qtimerinfo_unix.cpp84
-rw-r--r--src/corelib/kernel/qtimerinfo_unix_p.h14
-rw-r--r--src/corelib/kernel/qtranslator.h4
-rw-r--r--src/corelib/kernel/qvariant.cpp10
-rw-r--r--src/corelib/kernel/qvariant.h30
-rw-r--r--src/corelib/kernel/qvariant_p.h2
-rw-r--r--src/corelib/kernel/qwineventnotifier.h4
-rw-r--r--src/corelib/mimetypes/qmimedatabase.h3
-rw-r--r--src/corelib/mimetypes/qmimetype.h3
-rw-r--r--src/corelib/plugin/qfactoryinterface.h4
-rw-r--r--src/corelib/plugin/qlibrary.cpp173
-rw-r--r--src/corelib/plugin/qlibrary.h10
-rw-r--r--src/corelib/plugin/qlibrary_p.h9
-rw-r--r--src/corelib/plugin/qlibrary_unix.cpp2
-rw-r--r--src/corelib/plugin/qlibrary_win.cpp7
-rw-r--r--src/corelib/plugin/qplugin.h4
-rw-r--r--src/corelib/plugin/qpluginloader.h9
-rw-r--r--src/corelib/plugin/quuid.cpp12
-rw-r--r--src/corelib/plugin/quuid.h4
-rw-r--r--src/corelib/statemachine/qabstractstate.h4
-rw-r--r--src/corelib/statemachine/qabstracttransition.h4
-rw-r--r--src/corelib/statemachine/qeventtransition.h4
-rw-r--r--src/corelib/statemachine/qfinalstate.h4
-rw-r--r--src/corelib/statemachine/qhistorystate.h4
-rw-r--r--src/corelib/statemachine/qsignaltransition.h4
-rw-r--r--src/corelib/statemachine/qstate.h4
-rw-r--r--src/corelib/statemachine/qstatemachine.h4
-rw-r--r--src/corelib/statemachine/qstatemachine_p.h8
-rw-r--r--src/corelib/thread/qatomic.cpp2
-rw-r--r--src/corelib/thread/qatomic.h4
-rw-r--r--src/corelib/thread/qbasicatomic.h8
-rw-r--r--src/corelib/thread/qexception.cpp4
-rw-r--r--src/corelib/thread/qexception.h2
-rw-r--r--src/corelib/thread/qfuture.h2
-rw-r--r--src/corelib/thread/qfuture.qdoc2
-rw-r--r--src/corelib/thread/qfutureinterface.cpp2
-rw-r--r--src/corelib/thread/qfutureinterface.h5
-rw-r--r--src/corelib/thread/qfuturesynchronizer.h5
-rw-r--r--src/corelib/thread/qfuturewatcher.h3
-rw-r--r--src/corelib/thread/qgenericatomic.h6
-rw-r--r--src/corelib/thread/qmutex.h4
-rw-r--r--src/corelib/thread/qmutex_p.h9
-rw-r--r--src/corelib/thread/qmutex_unix.cpp11
-rw-r--r--src/corelib/thread/qoldbasicatomic.h6
-rw-r--r--src/corelib/thread/qreadwritelock.cpp2
-rw-r--r--src/corelib/thread/qreadwritelock.h4
-rw-r--r--src/corelib/thread/qresultstore.cpp8
-rw-r--r--src/corelib/thread/qresultstore.h4
-rw-r--r--src/corelib/thread/qrunnable.cpp2
-rw-r--r--src/corelib/thread/qrunnable.h2
-rw-r--r--src/corelib/thread/qsemaphore.h4
-rw-r--r--src/corelib/thread/qthread.cpp7
-rw-r--r--src/corelib/thread/qthread.h4
-rw-r--r--src/corelib/thread/qthread_p.h1
-rw-r--r--src/corelib/thread/qthread_unix.cpp36
-rw-r--r--src/corelib/thread/qthread_win.cpp5
-rw-r--r--src/corelib/thread/qthreadpool.cpp14
-rw-r--r--src/corelib/thread/qthreadpool.h2
-rw-r--r--src/corelib/thread/qthreadstorage.h4
-rw-r--r--src/corelib/thread/qwaitcondition.h4
-rw-r--r--src/corelib/thread/qwaitcondition_unix.cpp46
-rw-r--r--src/corelib/thread/thread.pri2
-rw-r--r--src/corelib/tools/qalgorithms.h4
-rw-r--r--src/corelib/tools/qalgorithms.qdoc20
-rw-r--r--src/corelib/tools/qarraydata.h4
-rw-r--r--src/corelib/tools/qarraydataops.h4
-rw-r--r--src/corelib/tools/qarraydatapointer.h4
-rw-r--r--src/corelib/tools/qbitarray.cpp6
-rw-r--r--src/corelib/tools/qbitarray.h4
-rw-r--r--src/corelib/tools/qbytearray.cpp32
-rw-r--r--src/corelib/tools/qbytearray.h4
-rw-r--r--src/corelib/tools/qbytearraymatcher.h4
-rw-r--r--src/corelib/tools/qcache.h4
-rw-r--r--src/corelib/tools/qchar.cpp147
-rw-r--r--src/corelib/tools/qchar.h132
-rw-r--r--src/corelib/tools/qcollator_p.h4
-rw-r--r--src/corelib/tools/qcontainerfwd.h4
-rw-r--r--src/corelib/tools/qcontiguouscache.cpp4
-rw-r--r--src/corelib/tools/qcontiguouscache.h4
-rw-r--r--src/corelib/tools/qcryptographichash.cpp161
-rw-r--r--src/corelib/tools/qcryptographichash.h11
-rw-r--r--src/corelib/tools/qdatetime.cpp35
-rw-r--r--src/corelib/tools/qdatetime.h4
-rw-r--r--src/corelib/tools/qdatetime_p.h3
-rw-r--r--src/corelib/tools/qeasingcurve.h4
-rw-r--r--src/corelib/tools/qelapsedtimer.h4
-rw-r--r--src/corelib/tools/qelapsedtimer_mac.cpp6
-rw-r--r--src/corelib/tools/qelapsedtimer_unix.cpp10
-rw-r--r--src/corelib/tools/qfreelist_p.h4
-rw-r--r--src/corelib/tools/qharfbuzz_p.h303
-rw-r--r--src/corelib/tools/qhash.cpp22
-rw-r--r--src/corelib/tools/qhash.h23
-rw-r--r--src/corelib/tools/qiterator.h4
-rw-r--r--src/corelib/tools/qiterator.qdoc24
-rw-r--r--src/corelib/tools/qline.cpp6
-rw-r--r--src/corelib/tools/qline.h4
-rw-r--r--src/corelib/tools/qlinkedlist.h4
-rw-r--r--src/corelib/tools/qlist.h4
-rw-r--r--src/corelib/tools/qlocale.cpp326
-rw-r--r--src/corelib/tools/qlocale.h139
-rw-r--r--src/corelib/tools/qlocale.qdoc149
-rw-r--r--src/corelib/tools/qlocale_blackberry.cpp313
-rw-r--r--src/corelib/tools/qlocale_blackberry.h99
-rw-r--r--src/corelib/tools/qlocale_data_p.h751
-rw-r--r--src/corelib/tools/qlocale_mac.mm2
-rw-r--r--src/corelib/tools/qlocale_p.h42
-rw-r--r--src/corelib/tools/qlocale_unix.cpp101
-rw-r--r--src/corelib/tools/qmap.cpp83
-rw-r--r--src/corelib/tools/qmap.h142
-rw-r--r--src/corelib/tools/qmargins.cpp236
-rw-r--r--src/corelib/tools/qmargins.h133
-rw-r--r--src/corelib/tools/qmessageauthenticationcode.cpp283
-rw-r--r--src/corelib/tools/qmessageauthenticationcode.h80
-rw-r--r--src/corelib/tools/qpair.h4
-rw-r--r--src/corelib/tools/qpair.qdoc2
-rw-r--r--src/corelib/tools/qpodlist_p.h4
-rw-r--r--src/corelib/tools/qpoint.cpp18
-rw-r--r--src/corelib/tools/qpoint.h10
-rw-r--r--src/corelib/tools/qqueue.h4
-rw-r--r--src/corelib/tools/qrect.h10
-rw-r--r--src/corelib/tools/qrefcount.h4
-rw-r--r--src/corelib/tools/qregexp.cpp2
-rw-r--r--src/corelib/tools/qregexp.h6
-rw-r--r--src/corelib/tools/qregularexpression.cpp188
-rw-r--r--src/corelib/tools/qregularexpression.h18
-rw-r--r--src/corelib/tools/qringbuffer_p.h2
-rw-r--r--src/corelib/tools/qscopedpointer.h3
-rw-r--r--src/corelib/tools/qscopedpointer_p.h2
-rw-r--r--src/corelib/tools/qscopedvaluerollback.h2
-rw-r--r--src/corelib/tools/qset.h15
-rw-r--r--src/corelib/tools/qset.qdoc30
-rw-r--r--src/corelib/tools/qshareddata.cpp6
-rw-r--r--src/corelib/tools/qshareddata.h4
-rw-r--r--src/corelib/tools/qsharedpointer.cpp86
-rw-r--r--src/corelib/tools/qsharedpointer.h7
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h38
-rw-r--r--src/corelib/tools/qsimd_p.h4
-rw-r--r--src/corelib/tools/qsize.h4
-rw-r--r--src/corelib/tools/qstack.h4
-rw-r--r--src/corelib/tools/qstring.cpp422
-rw-r--r--src/corelib/tools/qstring.h34
-rw-r--r--src/corelib/tools/qstringbuilder.h4
-rw-r--r--src/corelib/tools/qstringlist.cpp12
-rw-r--r--src/corelib/tools/qstringlist.h16
-rw-r--r--src/corelib/tools/qstringmatcher.h4
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp42
-rw-r--r--src/corelib/tools/qtextboundaryfinder.h4
-rw-r--r--src/corelib/tools/qtimeline.cpp3
-rw-r--r--src/corelib/tools/qtimeline.h4
-rw-r--r--src/corelib/tools/qunicodetables.cpp11948
-rw-r--r--src/corelib/tools/qunicodetables_p.h113
-rw-r--r--src/corelib/tools/qunicodetools.cpp53
-rw-r--r--src/corelib/tools/qunicodetools_p.h3
-rw-r--r--src/corelib/tools/qvarlengtharray.h9
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc20
-rw-r--r--src/corelib/tools/qvector.cpp48
-rw-r--r--src/corelib/tools/qvector.h29
-rw-r--r--src/corelib/tools/tools.pri11
-rw-r--r--src/corelib/xml/qxmlstream.h4
-rw-r--r--src/corelib/xml/qxmlutils.cpp2
-rw-r--r--src/dbus/qdbus_symbols_p.h2
-rw-r--r--src/dbus/qdbusabstractadaptor.h4
-rw-r--r--src/dbus/qdbusabstractinterface.cpp21
-rw-r--r--src/dbus/qdbusabstractinterface.h4
-rw-r--r--src/dbus/qdbusargument.h21
-rw-r--r--src/dbus/qdbusconnection.cpp47
-rw-r--r--src/dbus/qdbusconnection.h4
-rw-r--r--src/dbus/qdbusconnection_p.h12
-rw-r--r--src/dbus/qdbusconnectioninterface.h4
-rw-r--r--src/dbus/qdbuscontext.h4
-rw-r--r--src/dbus/qdbuserror.cpp2
-rw-r--r--src/dbus/qdbuserror.h4
-rw-r--r--src/dbus/qdbusextratypes.h4
-rw-r--r--src/dbus/qdbusintegrator.cpp93
-rw-r--r--src/dbus/qdbusintegrator_p.h2
-rw-r--r--src/dbus/qdbusinterface.h4
-rw-r--r--src/dbus/qdbusintrospection_p.h2
-rw-r--r--src/dbus/qdbusmacros.h2
-rw-r--r--src/dbus/qdbusmessage.h4
-rw-r--r--src/dbus/qdbusmetaobject.cpp18
-rw-r--r--src/dbus/qdbusmetatype.cpp6
-rw-r--r--src/dbus/qdbusmetatype.h4
-rw-r--r--src/dbus/qdbuspendingcall.h4
-rw-r--r--src/dbus/qdbuspendingreply.cpp28
-rw-r--r--src/dbus/qdbuspendingreply.h14
-rw-r--r--src/dbus/qdbusreply.h8
-rw-r--r--src/dbus/qdbusserver.h4
-rw-r--r--src/dbus/qdbusservicewatcher.h4
-rw-r--r--src/dbus/qdbusunixfiledescriptor.h4
-rw-r--r--src/dbus/qdbusutil_p.h4
-rw-r--r--src/dbus/qdbusvirtualobject.cpp5
-rw-r--r--src/dbus/qdbusvirtualobject.h4
-rw-r--r--src/gui/accessible/accessible.pri2
-rw-r--r--src/gui/accessible/qaccessible.cpp31
-rw-r--r--src/gui/accessible/qaccessible.h6
-rw-r--r--src/gui/accessible/qaccessible2.cpp2
-rw-r--r--src/gui/accessible/qaccessible2_p.h (renamed from src/gui/accessible/qaccessible2.h)8
-rw-r--r--src/gui/accessible/qaccessiblebridge.h4
-rw-r--r--src/gui/accessible/qaccessibleobject.cpp33
-rw-r--r--src/gui/accessible/qaccessibleobject.h5
-rw-r--r--src/gui/accessible/qaccessibleplugin.h4
-rw-r--r--src/gui/accessible/qplatformaccessibility.h4
-rw-r--r--src/gui/doc/snippets/code/src_gui_util_qvalidator.cpp43
-rw-r--r--src/gui/doc/snippets/textdocument-tables/mainwindow.cpp2
-rw-r--r--src/gui/doc/snippets/textdocument-texttable/main.cpp2
-rw-r--r--src/gui/doc/src/external-resources.qdoc5
-rw-r--r--src/gui/doc/src/paintsystem.qdoc10
-rw-r--r--src/gui/doc/src/qtgui.qdoc2
-rw-r--r--src/gui/gui.pro4
-rw-r--r--src/gui/image/qbitmap.h4
-rw-r--r--src/gui/image/qicon.cpp6
-rw-r--r--src/gui/image/qicon.h4
-rw-r--r--src/gui/image/qiconengine.h4
-rw-r--r--src/gui/image/qiconengineplugin.h4
-rw-r--r--src/gui/image/qiconloader_p.h2
-rw-r--r--src/gui/image/qimage.h4
-rw-r--r--src/gui/image/qimageiohandler.cpp2
-rw-r--r--src/gui/image/qimageiohandler.h4
-rw-r--r--src/gui/image/qimagereader.cpp75
-rw-r--r--src/gui/image/qimagereader.h5
-rw-r--r--src/gui/image/qimagewriter.cpp85
-rw-r--r--src/gui/image/qimagewriter.h5
-rw-r--r--src/gui/image/qmovie.cpp14
-rw-r--r--src/gui/image/qmovie.h4
-rw-r--r--src/gui/image/qpicture.h4
-rw-r--r--src/gui/image/qpictureformatplugin.h4
-rw-r--r--src/gui/image/qpixmap.cpp3
-rw-r--r--src/gui/image/qpixmap.h4
-rw-r--r--src/gui/image/qpixmap_raster.cpp2
-rw-r--r--src/gui/image/qpixmapcache.h4
-rw-r--r--src/gui/image/qplatformpixmap.cpp5
-rw-r--r--src/gui/image/qplatformpixmap.h5
-rw-r--r--src/gui/image/qxbmhandler.cpp2
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.h4
-rw-r--r--src/gui/kernel/kernel.pri4
-rw-r--r--src/gui/kernel/qclipboard.cpp14
-rw-r--r--src/gui/kernel/qclipboard.h4
-rw-r--r--src/gui/kernel/qcursor.h6
-rw-r--r--src/gui/kernel/qdrag.h4
-rw-r--r--src/gui/kernel/qevent.h4
-rw-r--r--src/gui/kernel/qgenericplugin.h4
-rw-r--r--src/gui/kernel/qgenericpluginfactory.h4
-rw-r--r--src/gui/kernel/qguiapplication.cpp193
-rw-r--r--src/gui/kernel/qguiapplication.h4
-rw-r--r--src/gui/kernel/qguiapplication_p.h7
-rw-r--r--src/gui/kernel/qinputmethod.cpp27
-rw-r--r--src/gui/kernel/qinputmethod.h7
-rw-r--r--src/gui/kernel/qinputmethod_p.h5
-rw-r--r--src/gui/kernel/qkeysequence.cpp64
-rw-r--r--src/gui/kernel/qkeysequence.h10
-rw-r--r--src/gui/kernel/qoffscreensurface.cpp345
-rw-r--r--src/gui/kernel/qoffscreensurface.h98
-rw-r--r--src/gui/kernel/qopenglcontext.cpp275
-rw-r--r--src/gui/kernel/qopenglcontext.h67
-rw-r--r--src/gui/kernel/qopenglcontext_p.h7
-rw-r--r--src/gui/kernel/qpalette.h4
-rw-r--r--src/gui/kernel/qplatformclipboard.h4
-rw-r--r--src/gui/kernel/qplatformcursor.cpp4
-rw-r--r--src/gui/kernel/qplatformcursor.h4
-rw-r--r--src/gui/kernel/qplatformdialoghelper.h4
-rw-r--r--src/gui/kernel/qplatformdrag.h4
-rw-r--r--src/gui/kernel/qplatforminputcontext.h4
-rw-r--r--src/gui/kernel/qplatforminputcontext_p.h4
-rw-r--r--src/gui/kernel/qplatforminputcontextfactory_p.h4
-rw-r--r--src/gui/kernel/qplatforminputcontextplugin_p.h4
-rw-r--r--src/gui/kernel/qplatformintegration.cpp22
-rw-r--r--src/gui/kernel/qplatformintegration.h12
-rw-r--r--src/gui/kernel/qplatformintegrationfactory_p.h4
-rw-r--r--src/gui/kernel/qplatformintegrationplugin.h4
-rw-r--r--src/gui/kernel/qplatformmenu.h16
-rw-r--r--src/gui/kernel/qplatformnativeinterface.h4
-rw-r--r--src/gui/kernel/qplatformoffscreensurface.cpp93
-rw-r--r--src/gui/kernel/qplatformoffscreensurface.h85
-rw-r--r--src/gui/kernel/qplatformopenglcontext.h7
-rw-r--r--src/gui/kernel/qplatformscreen.h4
-rw-r--r--src/gui/kernel/qplatformscreen_p.h4
-rw-r--r--src/gui/kernel/qplatformscreenpageflipper.h4
-rw-r--r--src/gui/kernel/qplatformservices.h3
-rw-r--r--src/gui/kernel/qplatformsharedgraphicscache.h4
-rw-r--r--src/gui/kernel/qplatformsurface.h5
-rw-r--r--src/gui/kernel/qplatformtheme.cpp16
-rw-r--r--src/gui/kernel/qplatformtheme.h7
-rw-r--r--src/gui/kernel/qplatformthemefactory_p.h4
-rw-r--r--src/gui/kernel/qplatformthemeplugin.h4
-rw-r--r--src/gui/kernel/qplatformwindow.cpp16
-rw-r--r--src/gui/kernel/qplatformwindow.h3
-rw-r--r--src/gui/kernel/qplatformwindow_p.h4
-rw-r--r--src/gui/kernel/qscreen.h4
-rw-r--r--src/gui/kernel/qscreen_p.h4
-rw-r--r--src/gui/kernel/qsessionmanager.h4
-rw-r--r--src/gui/kernel/qshortcutmap.cpp2
-rw-r--r--src/gui/kernel/qstylehints.h4
-rw-r--r--src/gui/kernel/qsurface.cpp1
-rw-r--r--src/gui/kernel/qsurface.h7
-rw-r--r--src/gui/kernel/qsurfaceformat.cpp24
-rw-r--r--src/gui/kernel/qsurfaceformat.h8
-rw-r--r--src/gui/kernel/qtouchdevice.h4
-rw-r--r--src/gui/kernel/qtouchdevice_p.h4
-rw-r--r--src/gui/kernel/qwindow.cpp257
-rw-r--r--src/gui/kernel/qwindow.h61
-rw-r--r--src/gui/kernel/qwindow_p.h12
-rw-r--r--src/gui/kernel/qwindowdefs.h4
-rw-r--r--src/gui/kernel/qwindowdefs_win.h4
-rw-r--r--src/gui/kernel/qwindowsysteminterface.cpp57
-rw-r--r--src/gui/kernel/qwindowsysteminterface.h15
-rw-r--r--src/gui/kernel/qwindowsysteminterface_p.h46
-rw-r--r--src/gui/math3d/qgenericmatrix.h4
-rw-r--r--src/gui/math3d/qmatrix4x4.h4
-rw-r--r--src/gui/math3d/qquaternion.cpp5
-rw-r--r--src/gui/math3d/qquaternion.h4
-rw-r--r--src/gui/math3d/qvector2d.cpp33
-rw-r--r--src/gui/math3d/qvector2d.h7
-rw-r--r--src/gui/math3d/qvector3d.cpp13
-rw-r--r--src/gui/math3d/qvector3d.h5
-rw-r--r--src/gui/math3d/qvector4d.h4
-rw-r--r--src/gui/opengl/opengl.pri68
-rw-r--r--src/gui/opengl/qopengl.h217
-rw-r--r--src/gui/opengl/qopengl2pexvertexarray_p.h6
-rw-r--r--src/gui/opengl/qopengl_p.h6
-rw-r--r--src/gui/opengl/qopenglbuffer.h6
-rw-r--r--src/gui/opengl/qopenglcustomshaderstage_p.h4
-rw-r--r--src/gui/opengl/qopengldebug.cpp1806
-rw-r--r--src/gui/opengl/qopengldebug.h220
-rw-r--r--src/gui/opengl/qopenglengineshadermanager_p.h4
-rw-r--r--src/gui/opengl/qopenglengineshadersource_p.h4
-rw-r--r--src/gui/opengl/qopengles2ext.h514
-rw-r--r--src/gui/opengl/qopenglext.h1584
-rw-r--r--src/gui/opengl/qopenglextensions_p.h4
-rw-r--r--src/gui/opengl/qopenglframebufferobject.h6
-rw-r--r--src/gui/opengl/qopenglfunctions.cpp11
-rw-r--r--src/gui/opengl/qopenglfunctions.h27
-rw-r--r--src/gui/opengl/qopenglfunctions_1_0.cpp141
-rw-r--r--src/gui/opengl/qopenglfunctions_1_0.h1930
-rw-r--r--src/gui/opengl/qopenglfunctions_1_1.cpp167
-rw-r--r--src/gui/opengl/qopenglfunctions_1_1.h2120
-rw-r--r--src/gui/opengl/qopenglfunctions_1_2.cpp193
-rw-r--r--src/gui/opengl/qopenglfunctions_1_2.h2358
-rw-r--r--src/gui/opengl/qopenglfunctions_1_3.cpp219
-rw-r--r--src/gui/opengl/qopenglfunctions_1_3.h2644
-rw-r--r--src/gui/opengl/qopenglfunctions_1_4.cpp245
-rw-r--r--src/gui/opengl/qopenglfunctions_1_4.h2924
-rw-r--r--src/gui/opengl/qopenglfunctions_1_5.cpp258
-rw-r--r--src/gui/opengl/qopenglfunctions_1_5.h3047
-rw-r--r--src/gui/opengl/qopenglfunctions_2_0.cpp284
-rw-r--r--src/gui/opengl/qopenglfunctions_2_0.h3615
-rw-r--r--src/gui/opengl/qopenglfunctions_2_1.cpp297
-rw-r--r--src/gui/opengl/qopenglfunctions_2_1.h3660
-rw-r--r--src/gui/opengl/qopenglfunctions_3_0.cpp323
-rw-r--r--src/gui/opengl/qopenglfunctions_3_0.h4174
-rw-r--r--src/gui/opengl/qopenglfunctions_3_1.cpp242
-rw-r--r--src/gui/opengl/qopenglfunctions_3_1.h1592
-rw-r--r--src/gui/opengl/qopenglfunctions_3_2_compatibility.cpp350
-rw-r--r--src/gui/opengl/qopenglfunctions_3_2_compatibility.h4378
-rw-r--r--src/gui/opengl/qopenglfunctions_3_2_core.cpp256
-rw-r--r--src/gui/opengl/qopenglfunctions_3_2_core.h1711
-rw-r--r--src/gui/opengl/qopenglfunctions_3_3_compatibility.cpp363
-rw-r--r--src/gui/opengl/qopenglfunctions_3_3_compatibility.h4735
-rw-r--r--src/gui/opengl/qopenglfunctions_3_3_core.cpp269
-rw-r--r--src/gui/opengl/qopenglfunctions_3_3_core.h2064
-rw-r--r--src/gui/opengl/qopenglfunctions_4_0_compatibility.cpp376
-rw-r--r--src/gui/opengl/qopenglfunctions_4_0_compatibility.h5020
-rw-r--r--src/gui/opengl/qopenglfunctions_4_0_core.cpp282
-rw-r--r--src/gui/opengl/qopenglfunctions_4_0_core.h2345
-rw-r--r--src/gui/opengl/qopenglfunctions_4_1_compatibility.cpp389
-rw-r--r--src/gui/opengl/qopenglfunctions_4_1_compatibility.h5557
-rw-r--r--src/gui/opengl/qopenglfunctions_4_1_core.cpp295
-rw-r--r--src/gui/opengl/qopenglfunctions_4_1_core.h2878
-rw-r--r--src/gui/opengl/qopenglfunctions_4_2_compatibility.cpp402
-rw-r--r--src/gui/opengl/qopenglfunctions_4_2_compatibility.h5638
-rw-r--r--src/gui/opengl/qopenglfunctions_4_2_core.cpp308
-rw-r--r--src/gui/opengl/qopenglfunctions_4_2_core.h2955
-rw-r--r--src/gui/opengl/qopenglfunctions_4_3_compatibility.cpp415
-rw-r--r--src/gui/opengl/qopenglfunctions_4_3_compatibility.h5845
-rw-r--r--src/gui/opengl/qopenglfunctions_4_3_core.cpp321
-rw-r--r--src/gui/opengl/qopenglfunctions_4_3_core.h3158
-rw-r--r--src/gui/opengl/qopenglfunctions_es2.cpp103
-rw-r--r--src/gui/opengl/qopenglfunctions_es2.h933
-rw-r--r--src/gui/opengl/qopenglpaintdevice.cpp14
-rw-r--r--src/gui/opengl/qopenglpaintdevice.h7
-rw-r--r--src/gui/opengl/qopenglpaintengine.cpp99
-rw-r--r--src/gui/opengl/qopenglpaintengine_p.h7
-rw-r--r--src/gui/opengl/qopenglqueryhelper_p.h177
-rw-r--r--src/gui/opengl/qopenglshadercache_meego_p.h4
-rw-r--r--src/gui/opengl/qopenglshadercache_p.h4
-rw-r--r--src/gui/opengl/qopenglshaderprogram.cpp318
-rw-r--r--src/gui/opengl/qopenglshaderprogram.h25
-rw-r--r--src/gui/opengl/qopengltexturecache.cpp7
-rw-r--r--src/gui/opengl/qopengltexturecache_p.h3
-rw-r--r--src/gui/opengl/qopengltextureglyphcache.cpp44
-rw-r--r--src/gui/opengl/qopengltimerquery.cpp876
-rw-r--r--src/gui/opengl/qopengltimerquery.h116
-rw-r--r--src/gui/opengl/qopenglversionfunctions.cpp1791
-rw-r--r--src/gui/opengl/qopenglversionfunctions.h1365
-rw-r--r--src/gui/opengl/qopenglversionfunctionsfactory.cpp153
-rw-r--r--src/gui/opengl/qopenglversionfunctionsfactory_p.h73
-rw-r--r--src/gui/opengl/qopenglvertexarrayobject.cpp473
-rw-r--r--src/gui/opengl/qopenglvertexarrayobject.h110
-rw-r--r--src/gui/opengl/qtriangulator.cpp10
-rw-r--r--src/gui/painting/qbackingstore.cpp7
-rw-r--r--src/gui/painting/qbackingstore.h4
-rw-r--r--src/gui/painting/qbrush.h13
-rw-r--r--src/gui/painting/qcolor.cpp2
-rw-r--r--src/gui/painting/qcolor.h8
-rw-r--r--src/gui/painting/qcosmeticstroker_p.h4
-rw-r--r--src/gui/painting/qcssutil_p.h2
-rw-r--r--src/gui/painting/qdrawhelper.cpp2
-rw-r--r--src/gui/painting/qdrawhelper_p.h42
-rw-r--r--src/gui/painting/qemulationpaintengine_p.h10
-rw-r--r--src/gui/painting/qgrayraster.c10
-rw-r--r--src/gui/painting/qmatrix.h4
-rw-r--r--src/gui/painting/qoutlinemapper.cpp2
-rw-r--r--src/gui/painting/qpagedpaintdevice.h4
-rw-r--r--src/gui/painting/qpaintbuffer.cpp12
-rw-r--r--src/gui/painting/qpaintdevice.h4
-rw-r--r--src/gui/painting/qpaintengine.h4
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp48
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h4
-rw-r--r--src/gui/painting/qpaintengineex.cpp12
-rw-r--r--src/gui/painting/qpaintengineex_p.h6
-rw-r--r--src/gui/painting/qpainter.cpp44
-rw-r--r--src/gui/painting/qpainter.h4
-rw-r--r--src/gui/painting/qpainterpath.h4
-rw-r--r--src/gui/painting/qpathclipper_p.h4
-rw-r--r--src/gui/painting/qpdfwriter.h4
-rw-r--r--src/gui/painting/qpen.h4
-rw-r--r--src/gui/painting/qplatformbackingstore.h4
-rw-r--r--src/gui/painting/qpolygon.h4
-rw-r--r--src/gui/painting/qregion.h4
-rw-r--r--src/gui/painting/qrgb.h7
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp9
-rw-r--r--src/gui/painting/qtextureglyphcache_p.h4
-rw-r--r--src/gui/painting/qtransform.h8
-rw-r--r--src/gui/painting/qvectorpath_p.h4
-rw-r--r--src/gui/text/qabstractfontengine_p.h108
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.cpp2
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.h4
-rw-r--r--src/gui/text/qcssparser.cpp8
-rw-r--r--src/gui/text/qfont.cpp207
-rw-r--r--src/gui/text/qfont.h4
-rw-r--r--src/gui/text/qfont_p.h12
-rw-r--r--src/gui/text/qfont_qpa.cpp2
-rw-r--r--src/gui/text/qfontdatabase.cpp206
-rw-r--r--src/gui/text/qfontdatabase.h4
-rw-r--r--src/gui/text/qfontdatabase_qpa.cpp12
-rw-r--r--src/gui/text/qfontengine.cpp128
-rw-r--r--src/gui/text/qfontengine_ft.cpp49
-rw-r--r--src/gui/text/qfontengine_ft_p.h8
-rw-r--r--src/gui/text/qfontengine_p.h35
-rw-r--r--src/gui/text/qfontengine_qpa.cpp4
-rw-r--r--src/gui/text/qfontengine_qpa_p.h4
-rw-r--r--src/gui/text/qfontengine_qpf.cpp9
-rw-r--r--src/gui/text/qfontengine_qpf_p.h2
-rw-r--r--src/gui/text/qfontengineglyphcache_p.h1
-rw-r--r--src/gui/text/qfontinfo.h4
-rw-r--r--src/gui/text/qfontmetrics.cpp98
-rw-r--r--src/gui/text/qfontmetrics.h4
-rw-r--r--src/gui/text/qglyphrun.h4
-rw-r--r--src/gui/text/qglyphrun_p.h4
-rw-r--r--src/gui/text/qharfbuzz_copy_p.h106
-rw-r--r--src/gui/text/qplatformfontdatabase.cpp108
-rw-r--r--src/gui/text/qplatformfontdatabase.h13
-rw-r--r--src/gui/text/qrawfont.cpp82
-rw-r--r--src/gui/text/qrawfont.h24
-rw-r--r--src/gui/text/qstatictext.cpp22
-rw-r--r--src/gui/text/qstatictext.h6
-rw-r--r--src/gui/text/qstatictext_p.h2
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp2
-rw-r--r--src/gui/text/qsyntaxhighlighter.h4
-rw-r--r--src/gui/text/qtextcursor.h4
-rw-r--r--src/gui/text/qtextdocument.cpp4
-rw-r--r--src/gui/text/qtextdocument.h4
-rw-r--r--src/gui/text/qtextdocumentfragment.h4
-rw-r--r--src/gui/text/qtextdocumentwriter.h4
-rw-r--r--src/gui/text/qtextengine.cpp194
-rw-r--r--src/gui/text/qtextengine_p.h60
-rw-r--r--src/gui/text/qtextformat.h4
-rw-r--r--src/gui/text/qtextlayout.cpp67
-rw-r--r--src/gui/text/qtextlayout.h4
-rw-r--r--src/gui/text/qtextlist.h4
-rw-r--r--src/gui/text/qtextobject.cpp2
-rw-r--r--src/gui/text/qtextobject.h4
-rw-r--r--src/gui/text/qtextodfwriter.cpp14
-rw-r--r--src/gui/text/qtextodfwriter_p.h3
-rw-r--r--src/gui/text/qtextoption.cpp2
-rw-r--r--src/gui/text/qtextoption.h4
-rw-r--r--src/gui/text/qtexttable.cpp6
-rw-r--r--src/gui/text/qtexttable.h4
-rw-r--r--src/gui/text/qzip.cpp12
-rw-r--r--src/gui/text/qzipreader_p.h2
-rw-r--r--src/gui/text/qzipwriter_p.h3
-rw-r--r--src/gui/text/text.pri1
-rw-r--r--src/gui/util/qdesktopservices.h4
-rw-r--r--src/gui/util/qvalidator.cpp159
-rw-r--r--src/gui/util/qvalidator.h37
-rw-r--r--src/network/access/qabstractnetworkcache.h4
-rw-r--r--src/network/access/qftp_p.h4
-rw-r--r--src/network/access/qhttpmultipart.h4
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp14
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h9
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp21
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h2
-rw-r--r--src/network/access/qhttpnetworkreply_p.h1
-rw-r--r--src/network/access/qhttpthreaddelegate.cpp9
-rw-r--r--src/network/access/qhttpthreaddelegate_p.h2
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp7
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h1
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp2
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp18
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp74
-rw-r--r--src/network/access/qnetworkaccessmanager.h6
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h1
-rw-r--r--src/network/access/qnetworkcookie.h4
-rw-r--r--src/network/access/qnetworkcookiejar.h4
-rw-r--r--src/network/access/qnetworkdiskcache.h4
-rw-r--r--src/network/access/qnetworkreply.cpp25
-rw-r--r--src/network/access/qnetworkreply.h5
-rw-r--r--src/network/access/qnetworkreplyfileimpl.cpp12
-rw-r--r--src/network/access/qnetworkreplyhttpimpl.cpp12
-rw-r--r--src/network/access/qnetworkreplyhttpimpl_p.h2
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp8
-rw-r--r--src/network/access/qnetworkreplyimpl_p.h1
-rw-r--r--src/network/access/qnetworkrequest.h4
-rw-r--r--src/network/bearer/qbearerplugin_p.h4
-rw-r--r--src/network/bearer/qnetworkconfigmanager.cpp2
-rw-r--r--src/network/bearer/qnetworkconfigmanager.h4
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.cpp2
-rw-r--r--src/network/bearer/qnetworkconfiguration.h4
-rw-r--r--src/network/bearer/qnetworksession.cpp108
-rw-r--r--src/network/bearer/qnetworksession.h4
-rw-r--r--src/network/bearer/qnetworksession_p.h2
-rw-r--r--src/network/doc/snippets/code/src_network_socket_qabstractsocket.cpp2
-rw-r--r--src/network/doc/snippets/network/tcpwait.cpp8
-rw-r--r--src/network/kernel/kernel.pri8
-rw-r--r--src/network/kernel/qauthenticator.cpp1
-rw-r--r--src/network/kernel/qauthenticator.h6
-rw-r--r--src/network/kernel/qdnslookup.h4
-rw-r--r--src/network/kernel/qhostaddress.cpp2
-rw-r--r--src/network/kernel/qhostaddress.h3
-rw-r--r--src/network/kernel/qhostinfo.cpp13
-rw-r--r--src/network/kernel/qhostinfo.h4
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp2
-rw-r--r--src/network/kernel/qnetworkfunctions_wince.h4
-rw-r--r--src/network/kernel/qnetworkinterface.h6
-rw-r--r--src/network/kernel/qnetworkinterface_unix.cpp6
-rw-r--r--src/network/kernel/qnetworkinterface_win.cpp2
-rw-r--r--src/network/kernel/qnetworkinterface_win_p.h32
-rw-r--r--src/network/kernel/qnetworkproxy.cpp2
-rw-r--r--src/network/kernel/qnetworkproxy.h4
-rw-r--r--src/network/kernel/qnetworkproxy_blackberry.cpp30
-rw-r--r--src/network/kernel/qnetworkproxy_mac.cpp5
-rw-r--r--src/network/kernel/qurlinfo_p.h4
-rw-r--r--src/network/socket/qabstractsocket.h4
-rw-r--r--src/network/socket/qlocalserver.h4
-rw-r--r--src/network/socket/qlocalserver_unix.cpp4
-rw-r--r--src/network/socket/qlocalsocket.cpp75
-rw-r--r--src/network/socket/qlocalsocket.h7
-rw-r--r--src/network/socket/qlocalsocket_tcp.cpp22
-rw-r--r--src/network/socket/qlocalsocket_unix.cpp15
-rw-r--r--src/network/socket/qlocalsocket_win.cpp18
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp8
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp2
-rw-r--r--src/network/socket/qtcpserver.h4
-rw-r--r--src/network/socket/qtcpsocket.cpp2
-rw-r--r--src/network/socket/qtcpsocket.h4
-rw-r--r--src/network/socket/qudpsocket.h4
-rw-r--r--src/network/ssl/qssl.cpp2
-rw-r--r--src/network/ssl/qssl.h4
-rw-r--r--src/network/ssl/qsslcertificate.h4
-rw-r--r--src/network/ssl/qsslcertificateextension.h4
-rw-r--r--src/network/ssl/qsslcipher.cpp2
-rw-r--r--src/network/ssl/qsslcipher.h4
-rw-r--r--src/network/ssl/qsslconfiguration.cpp56
-rw-r--r--src/network/ssl/qsslconfiguration.h9
-rw-r--r--src/network/ssl/qsslconfiguration_p.h7
-rw-r--r--src/network/ssl/qsslcontext.cpp309
-rw-r--r--src/network/ssl/qsslcontext_p.h88
-rw-r--r--src/network/ssl/qsslerror.cpp4
-rw-r--r--src/network/ssl/qsslerror.h6
-rw-r--r--src/network/ssl/qsslkey.h4
-rw-r--r--src/network/ssl/qsslsocket.cpp74
-rw-r--r--src/network/ssl/qsslsocket.h7
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp272
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h5
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp48
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols_p.h4
-rw-r--r--src/network/ssl/qsslsocket_p.h11
-rw-r--r--src/network/ssl/ssl.pri6
-rw-r--r--src/opengl/doc/src/qtopengl-examples.qdoc2
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h6
-rw-r--r--src/opengl/gl2paintengineex/qglcustomshaderstage_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadersource_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qglshadercache_meego_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qglshadercache_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp127
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h13
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp21
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h7
-rw-r--r--src/opengl/opengl.pro5
-rw-r--r--src/opengl/qgl.cpp301
-rw-r--r--src/opengl/qgl.h4
-rw-r--r--src/opengl/qgl_p.h79
-rw-r--r--src/opengl/qglbuffer.cpp44
-rw-r--r--src/opengl/qglbuffer.h4
-rw-r--r--src/opengl/qglcolormap.h4
-rw-r--r--src/opengl/qglextensions.cpp414
-rw-r--r--src/opengl/qglextensions_p.h587
-rw-r--r--src/opengl/qglframebufferobject.cpp149
-rw-r--r--src/opengl/qglframebufferobject.h3
-rw-r--r--src/opengl/qglframebufferobject_p.h2
-rw-r--r--src/opengl/qglfunctions.cpp7
-rw-r--r--src/opengl/qglfunctions.h4
-rw-r--r--src/opengl/qglpixelbuffer.h4
-rw-r--r--src/opengl/qglshaderprogram.cpp299
-rw-r--r--src/opengl/qglshaderprogram.h4
-rw-r--r--src/opengl/qgraphicsshadereffect_p.h4
-rw-r--r--src/opengl/qtopenglglobal.h4
-rw-r--r--src/openglextensions/openglextensions.pro15
-rw-r--r--src/openglextensions/qopenglextensions.cpp7713
-rw-r--r--src/openglextensions/qopenglextensions.h19469
-rw-r--r--src/platformsupport/cfsocketnotifier/cfsocketnotifier.pri4
-rw-r--r--src/platformsupport/cfsocketnotifier/qcfsocketnotifier.cpp255
-rw-r--r--src/platformsupport/cfsocketnotifier/qcfsocketnotifier_p.h90
-rw-r--r--src/platformsupport/cglconvenience/cglconvenience.mm11
-rw-r--r--src/platformsupport/cglconvenience/cglconvenience_p.h1
-rw-r--r--src/platformsupport/devicediscovery/devicediscovery.pri2
-rw-r--r--src/platformsupport/dnd/qshapedpixmapdndwindow.cpp4
-rw-r--r--src/platformsupport/dnd/qshapedpixmapdndwindow_p.h4
-rw-r--r--src/platformsupport/dnd/qsimpledrag.cpp2
-rw-r--r--src/platformsupport/dnd/qsimpledrag_p.h4
-rw-r--r--src/platformsupport/eglconvenience/eglconvenience.pri6
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience.cpp115
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience_p.h35
-rw-r--r--src/platformsupport/eglconvenience/qeglpbuffer.cpp76
-rw-r--r--src/platformsupport/eglconvenience/qeglpbuffer_p.h69
-rw-r--r--src/platformsupport/eglconvenience/qeglplatformcontext.cpp18
-rw-r--r--src/platformsupport/eglconvenience/qeglplatformcontext_p.h6
-rw-r--r--src/platformsupport/fbconvenience/qfbcursor.cpp2
-rw-r--r--src/platformsupport/fbconvenience/qfbscreen.cpp51
-rw-r--r--src/platformsupport/fbconvenience/qfbscreen_p.h6
-rw-r--r--src/platformsupport/fbconvenience/qfbwindow.cpp3
-rw-r--r--src/platformsupport/fbconvenience/qfbwindow_p.h2
-rw-r--r--src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp137
-rw-r--r--src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h5
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp144
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h6
-rw-r--r--src/platformsupport/fontdatabases/fontdatabases.pri2
-rw-r--r--src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h2
-rw-r--r--src/platformsupport/fontdatabases/mac/coretext.pri8
-rw-r--r--src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm211
-rw-r--r--src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h7
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm90
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h12
-rw-r--r--src/platformsupport/glxconvenience/qglxconvenience.cpp23
-rw-r--r--src/platformsupport/glxconvenience/qglxconvenience_p.h2
-rw-r--r--src/platformsupport/input/evdevkeyboard/qevdevkeyboardhandler_p.h4
-rw-r--r--src/platformsupport/input/evdevkeyboard/qevdevkeyboardmanager_p.h4
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h4
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h4
-rw-r--r--src/platformsupport/input/evdevtablet/qevdevtablet_p.h4
-rw-r--r--src/platformsupport/input/evdevtouch/qevdevtouch_p.h4
-rw-r--r--src/platformsupport/jniconvenience/jniconvenience.pri9
-rw-r--r--src/platformsupport/jniconvenience/qjnihelpers.cpp115
-rw-r--r--src/platformsupport/jniconvenience/qjnihelpers_p.h191
-rw-r--r--src/platformsupport/jniconvenience/qjniobject.cpp3098
-rw-r--r--src/platformsupport/jniconvenience/qjniobject_p.h169
-rw-r--r--src/platformsupport/linuxaccessibility/application_p.h2
-rw-r--r--src/platformsupport/linuxaccessibility/atspiadaptor_p.h4
-rw-r--r--src/platformsupport/linuxaccessibility/bridge_p.h2
-rw-r--r--src/platformsupport/linuxaccessibility/cache_p.h2
-rw-r--r--src/platformsupport/linuxaccessibility/constant_mappings_p.h2
-rw-r--r--src/platformsupport/linuxaccessibility/dbusconnection_p.h2
-rw-r--r--src/platformsupport/linuxaccessibility/struct_marshallers_p.h2
-rw-r--r--src/platformsupport/platformsupport.pro4
-rw-r--r--src/platformsupport/services/genericunix/qgenericunixservices_p.h4
-rw-r--r--src/platformsupport/themes/genericunix/qgenericunixthemes.cpp3
-rw-r--r--src/platformsupport/themes/genericunix/qgenericunixthemes_p.h4
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.h4
-rw-r--r--src/plugins/accessible/widgets/itemviews.cpp221
-rw-r--r--src/plugins/accessible/widgets/itemviews.h14
-rw-r--r--src/plugins/accessible/widgets/main.cpp3
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.h2
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.h4
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.h4
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h4
-rw-r--r--src/plugins/accessible/widgets/widgets.json4
-rw-r--r--src/plugins/bearer/bearer.pro4
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.cpp2
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux.cpp4
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux_p.h2
-rw-r--r--src/plugins/bearer/corewlan/corewlan.pro4
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerservice.h84
-rw-r--r--src/plugins/bearer/qnetworksession_impl.h2
-rw-r--r--src/plugins/generic/meego/qmeegointegration.h4
-rw-r--r--src/plugins/generic/tslib/qtslib.h4
-rw-r--r--src/plugins/imageformats/gif/gif.json3
-rw-r--r--src/plugins/imageformats/ico/ico.json3
-rw-r--r--src/plugins/imageformats/ico/qicohandler.cpp2
-rw-r--r--src/plugins/imageformats/ico/qicohandler.h6
-rw-r--r--src/plugins/imageformats/jpeg/jpeg.json3
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp20
-rw-r--r--src/plugins/platforminputcontexts/platforminputcontexts.pro2
-rw-r--r--src/plugins/platforms/android/android.pro3
-rw-r--r--src/plugins/platforms/android/opengl/opengl.pro30
-rw-r--r--src/plugins/platforms/android/raster/raster.pro19
-rw-r--r--src/plugins/platforms/android/src/android.json3
-rw-r--r--src/plugins/platforms/android/src/androidjniclipboard.cpp120
-rw-r--r--src/plugins/platforms/android/src/androidjniclipboard.h61
-rw-r--r--src/plugins/platforms/android/src/androidjniinput.cpp497
-rw-r--r--src/plugins/platforms/android/src/androidjniinput.h59
-rw-r--r--src/plugins/platforms/android/src/androidjnimain.cpp845
-rw-r--r--src/plugins/platforms/android/src/androidjnimain.h121
-rw-r--r--src/plugins/platforms/android/src/androidjnimenu.cpp405
-rw-r--r--src/plugins/platforms/android/src/androidjnimenu.h69
-rw-r--r--src/plugins/platforms/android/src/androidplatformplugin.cpp66
-rw-r--r--src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp (renamed from mkspecs/common/ios/qplatformdefs.h)95
-rw-r--r--src/plugins/platforms/android/src/opengl/qandroidopenglcontext.h68
-rw-r--r--src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.cpp72
-rw-r--r--src/plugins/platforms/android/src/opengl/qandroidopenglplatformwindow.h73
-rw-r--r--src/plugins/platforms/android/src/opengl/qeglfshooks_android.cpp132
-rw-r--r--src/plugins/platforms/android/src/qandroidassetsfileenginehandler.cpp288
-rw-r--r--src/plugins/platforms/android/src/qandroidassetsfileenginehandler.h60
-rw-r--r--src/plugins/platforms/android/src/qandroidinputcontext.cpp644
-rw-r--r--src/plugins/platforms/android/src/qandroidinputcontext.h130
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformclipboard.cpp79
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformclipboard.h63
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformfontdatabase.cpp79
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformfontdatabase.h58
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformintegration.cpp285
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformintegration.h164
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformmenu.cpp167
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformmenu.h91
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformmenubar.cpp109
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformmenubar.h74
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformmenuitem.cpp180
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformmenuitem.h99
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformservices.cpp83
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformservices.h61
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformtheme.cpp78
-rw-r--r--src/plugins/platforms/android/src/qandroidplatformtheme.h56
-rw-r--r--src/plugins/platforms/android/src/raster/qandroidplatformscreen.cpp71
-rw-r--r--src/plugins/platforms/android/src/raster/qandroidplatformscreen.h59
-rw-r--r--src/plugins/platforms/android/src/raster/qandroidplatformwindow.cpp56
-rw-r--r--src/plugins/platforms/android/src/raster/qandroidplatformwindow.h60
-rw-r--r--src/plugins/platforms/android/src/raster/raster.pri7
-rw-r--r--src/plugins/platforms/android/src/src.pri47
-rw-r--r--src/plugins/platforms/cocoa/cocoa.pro2
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibility.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h13
-rw-r--r--src/plugins/platforms/cocoa/qcocoabackingstore.mm6
-rw-r--r--src/plugins/platforms/cocoa/qcocoacursor.mm7
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventdispatcher.h12
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm239
-rw-r--r--src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm34
-rw-r--r--src/plugins/platforms/cocoa/qcocoaglcontext.mm16
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.h2
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm35
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintrospection.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.h12
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.mm35
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenuitem.h5
-rw-r--r--src/plugins/platforms/cocoa/qcocoaprintersupport.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoaprintersupport.mm31
-rwxr-xr-xsrc/plugins/platforms/cocoa/qcocoasystemtrayicon.h2
-rwxr-xr-xsrc/plugins/platforms/cocoa/qcocoasystemtrayicon.mm47
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm33
-rw-r--r--src/plugins/platforms/cocoa/qmacdefines_mac.h4
-rw-r--r--src/plugins/platforms/cocoa/qmultitouch_mac.mm5
-rw-r--r--src/plugins/platforms/cocoa/qmultitouch_mac_p.h4
-rw-r--r--src/plugins/platforms/cocoa/qnsview.h4
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm29
-rw-r--r--src/plugins/platforms/cocoa/qnsviewaccessibility.mm2
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.h20
-rw-r--r--src/plugins/platforms/cocoa/qpaintengine_mac.mm27
-rw-r--r--src/plugins/platforms/cocoa/qpaintengine_mac_p.h2
-rw-r--r--src/plugins/platforms/cocoa/qprintengine_mac.mm56
-rw-r--r--src/plugins/platforms/cocoa/qprintengine_mac_p.h3
-rw-r--r--src/plugins/platforms/directfb/qdirectfbcursor.cpp5
-rw-r--r--src/plugins/platforms/eglfs/eglfs.pri44
-rw-r--r--src/plugins/platforms/eglfs/eglfs.pro46
-rw-r--r--src/plugins/platforms/eglfs/qeglfscontext.cpp22
-rw-r--r--src/plugins/platforms/eglfs/qeglfscursor.cpp7
-rw-r--r--src/plugins/platforms/eglfs/qeglfshooks.h20
-rw-r--r--src/plugins/platforms/eglfs/qeglfshooks_stub.cpp134
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.cpp48
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.h9
-rw-r--r--src/plugins/platforms/eglfs/qeglfsscreen.cpp13
-rw-r--r--src/plugins/platforms/eglfs/qeglfsscreen.h2
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.cpp37
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.h4
-rw-r--r--src/plugins/platforms/ios/ios.json3
-rw-r--r--src/plugins/platforms/ios/ios.pro3
-rw-r--r--src/plugins/platforms/ios/plugin.mm69
-rw-r--r--src/plugins/platforms/ios/plugin.pro36
-rw-r--r--src/plugins/platforms/ios/qiosapplicationdelegate.h (renamed from mkspecs/common/ios/GLES/gl.h)16
-rw-r--r--src/plugins/platforms/ios/qiosapplicationdelegate.mm94
-rw-r--r--src/plugins/platforms/ios/qiosbackingstore.h70
-rw-r--r--src/plugins/platforms/ios/qiosbackingstore.mm125
-rw-r--r--src/plugins/platforms/ios/qioscontext.h91
-rw-r--r--src/plugins/platforms/ios/qioscontext.mm204
-rw-r--r--src/plugins/platforms/ios/qioseventdispatcher.h133
-rw-r--r--src/plugins/platforms/ios/qioseventdispatcher.mm322
-rw-r--r--src/plugins/platforms/ios/qiosglobal.h67
-rw-r--r--src/plugins/platforms/ios/qiosglobal.mm144
-rw-r--r--src/plugins/platforms/ios/qiosinputcontext.h73
-rw-r--r--src/plugins/platforms/ios/qiosinputcontext.mm142
-rw-r--r--src/plugins/platforms/ios/qiosintegration.h88
-rw-r--r--src/plugins/platforms/ios/qiosintegration.mm180
-rw-r--r--src/plugins/platforms/ios/qiosscreen.h88
-rw-r--r--src/plugins/platforms/ios/qiosscreen.mm238
-rw-r--r--src/plugins/platforms/ios/qiossoftwareinputhandler.h71
-rw-r--r--src/plugins/platforms/ios/qiostheme.h (renamed from mkspecs/unsupported/macx-iosdevice-g++-legacy/qplatformdefs.h)26
-rw-r--r--src/plugins/platforms/ios/qiostheme.mm (renamed from src/gui/text/qrawfont_ft.cpp)105
-rw-r--r--src/plugins/platforms/ios/qiosviewcontroller.h (renamed from mkspecs/unsupported/macx-iosdevice-clang/qplatformdefs.h)8
-rw-r--r--src/plugins/platforms/ios/qiosviewcontroller.mm90
-rw-r--r--src/plugins/platforms/ios/qioswindow.h103
-rw-r--r--src/plugins/platforms/ios/qioswindow.mm523
-rw-r--r--src/plugins/platforms/ios/qtmain.mm93
-rw-r--r--src/plugins/platforms/ios/qtmain.pro8
-rw-r--r--src/plugins/platforms/kms/kms.pro5
-rw-r--r--src/plugins/platforms/kms/qkmscursor.cpp68
-rw-r--r--src/plugins/platforms/kms/qkmscursor.h10
-rw-r--r--src/plugins/platforms/kms/qkmsscreen.cpp12
-rw-r--r--src/plugins/platforms/minimalegl/qminimaleglbackingstore.cpp1
-rw-r--r--src/plugins/platforms/minimalegl/qminimaleglintegration.h3
-rw-r--r--src/plugins/platforms/offscreen/main.cpp67
-rw-r--r--src/plugins/platforms/offscreen/offscreen.json3
-rw-r--r--src/plugins/platforms/offscreen/offscreen.pro25
-rw-r--r--src/plugins/platforms/offscreen/qoffscreencommon.cpp229
-rw-r--r--src/plugins/platforms/offscreen/qoffscreencommon.h109
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration.cpp162
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration.h80
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration_dummy.cpp (renamed from src/corelib/io/qfilesystemengine_mac.cpp)15
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp252
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenintegration_x11.h108
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenwindow.cpp199
-rw-r--r--src/plugins/platforms/offscreen/qoffscreenwindow.h86
-rw-r--r--src/plugins/platforms/platforms.pro9
-rw-r--r--src/plugins/platforms/qnx/qqnxbpseventfilter.cpp22
-rw-r--r--src/plugins/platforms/qnx/qqnxclipboard.h2
-rw-r--r--src/plugins/platforms/qnx/qqnxintegration.cpp2
-rw-r--r--src/plugins/platforms/qnx/qqnxnavigatoreventhandler.cpp6
-rw-r--r--src/plugins/platforms/qnx/qqnxnavigatoreventhandler.h2
-rw-r--r--src/plugins/platforms/qnx/qqnxscreen.cpp41
-rw-r--r--src/plugins/platforms/qnx/qqnxscreen.h3
-rw-r--r--src/plugins/platforms/qnx/qqnxwindow.cpp38
-rw-r--r--src/plugins/platforms/qnx/qqnxwindow.h1
-rw-r--r--src/plugins/platforms/windows/accessible/iaccessible2.cpp2
-rw-r--r--src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp17
-rw-r--r--src/plugins/platforms/windows/accessible/qwindowsaccessibility.h2
-rw-r--r--src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp2
-rw-r--r--src/plugins/platforms/windows/qtwindows_additional.h4
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp90
-rw-r--r--src/plugins/platforms/windows/qwindowscursor.cpp35
-rw-r--r--src/plugins/platforms/windows/qwindowscursor.h5
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.cpp567
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.h10
-rw-r--r--src/plugins/platforms/windows/qwindowsdrag.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.cpp147
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp12
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase_ft.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.cpp20
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.h2
-rw-r--r--src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h2
-rw-r--r--src/plugins/platforms/windows/qwindowsglcontext.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.cpp42
-rw-r--r--src/plugins/platforms/windows/qwindowskeymapper.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowsmime.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsservices.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp175
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.h23
-rw-r--r--src/plugins/platforms/windows/windows.pro4
-rw-r--r--src/plugins/platforms/xcb/qglxintegration.cpp193
-rw-r--r--src/plugins/platforms/xcb/qglxintegration.h20
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp6
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.h2
-rw-r--r--src/plugins/platforms/xcb/qxcbcursor.cpp34
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp22
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.h2
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.cpp9
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp242
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.h9
-rw-r--r--src/plugins/platformthemes/gtk2/gtk2.json3
-rw-r--r--src/plugins/platformthemes/gtk2/gtk2.pro20
-rw-r--r--src/plugins/platformthemes/gtk2/main.cpp67
-rw-r--r--src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp609
-rw-r--r--src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.h143
-rw-r--r--src/plugins/platformthemes/gtk2/qgtk2theme.cpp108
-rw-r--r--src/plugins/platformthemes/gtk2/qgtk2theme.h64
-rw-r--r--src/plugins/platformthemes/platformthemes.pro3
-rw-r--r--src/plugins/plugins.pro5
-rw-r--r--src/plugins/printsupport/cups/qcupsprintengine.cpp47
-rw-r--r--src/plugins/printsupport/cups/qcupsprintengine_p.h1
-rw-r--r--src/plugins/printsupport/cups/qcupsprintersupport.cpp5
-rw-r--r--src/plugins/printsupport/cups/qcupsprintersupport_p.h3
-rw-r--r--src/plugins/printsupport/windows/qwindowsprintersupport.cpp5
-rw-r--r--src/plugins/printsupport/windows/qwindowsprintersupport.h3
-rw-r--r--src/plugins/sqldrivers/db2/main.cpp2
-rw-r--r--src/plugins/sqldrivers/ibase/main.cpp2
-rw-r--r--src/plugins/sqldrivers/mysql/main.cpp2
-rw-r--r--src/plugins/sqldrivers/oci/main.cpp2
-rw-r--r--src/plugins/sqldrivers/odbc/main.cpp2
-rw-r--r--src/plugins/sqldrivers/psql/main.cpp2
-rw-r--r--src/plugins/sqldrivers/sqlite/smain.cpp2
-rw-r--r--src/plugins/sqldrivers/sqlite2/smain.cpp2
-rw-r--r--src/plugins/sqldrivers/tds/main.cpp2
-rw-r--r--src/printsupport/dialogs/dialogs.pri2
-rw-r--r--src/printsupport/dialogs/qabstractprintdialog.h4
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog.h4
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_unix.cpp16
-rw-r--r--src/printsupport/dialogs/qprintdialog.h4
-rw-r--r--src/printsupport/dialogs/qprintpreviewdialog.h4
-rw-r--r--src/printsupport/doc/snippets/widgetprinting.cpp2
-rw-r--r--src/printsupport/doc/src/qtprintsupport-index.qdoc4
-rw-r--r--src/printsupport/kernel/qcups.cpp21
-rw-r--r--src/printsupport/kernel/qcups_p.h1
-rw-r--r--src/printsupport/kernel/qpaintengine_alpha_p.h2
-rw-r--r--src/printsupport/kernel/qplatformprintersupport.cpp5
-rw-r--r--src/printsupport/kernel/qplatformprintersupport.h6
-rw-r--r--src/printsupport/kernel/qplatformprintplugin.h4
-rw-r--r--src/printsupport/kernel/qprintengine.h5
-rw-r--r--src/printsupport/kernel/qprintengine_win.cpp107
-rw-r--r--src/printsupport/kernel/qprintengine_win_p.h3
-rw-r--r--src/printsupport/kernel/qprinter.cpp33
-rw-r--r--src/printsupport/kernel/qprinter.h7
-rw-r--r--src/printsupport/kernel/qprinterinfo.cpp19
-rw-r--r--src/printsupport/kernel/qprinterinfo.h7
-rw-r--r--src/printsupport/kernel/qprinterinfo_p.h6
-rw-r--r--src/printsupport/kernel/qtprintsupportglobal.h4
-rw-r--r--src/printsupport/widgets/qprintpreviewwidget.h4
-rw-r--r--src/sql/doc/snippets/code/doc_src_sql-driver.cpp2
-rw-r--r--src/sql/doc/src/qsqldatatype-table.qdoc2
-rw-r--r--src/sql/doc/src/sql-driver.qdoc4
-rw-r--r--src/sql/doc/src/sql-programming.qdoc14
-rw-r--r--src/sql/drivers/db2/qsql_db2.cpp2
-rw-r--r--src/sql/drivers/db2/qsql_db2.pri2
-rw-r--r--src/sql/drivers/db2/qsql_db2_p.h (renamed from src/sql/drivers/db2/qsql_db2.h)22
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.cpp28
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.pri2
-rw-r--r--src/sql/drivers/ibase/qsql_ibase_p.h (renamed from src/sql/drivers/ibase/qsql_ibase.h)44
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.cpp12
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.pri2
-rw-r--r--src/sql/drivers/mysql/qsql_mysql_p.h (renamed from src/sql/drivers/mysql/qsql_mysql.h)20
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp34
-rw-r--r--src/sql/drivers/oci/qsql_oci.pri4
-rw-r--r--src/sql/drivers/oci/qsql_oci_p.h (renamed from src/sql/drivers/oci/qsql_oci.h)48
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp70
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.pri2
-rw-r--r--src/sql/drivers/odbc/qsql_odbc_p.h (renamed from src/sql/drivers/odbc/qsql_odbc.h)21
-rw-r--r--src/sql/drivers/psql/qsql_psql.cpp46
-rw-r--r--src/sql/drivers/psql/qsql_psql.pri2
-rw-r--r--src/sql/drivers/psql/qsql_psql_p.h (renamed from src/sql/drivers/psql/qsql_psql.h)20
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp32
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.pri2
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite_p.h (renamed from src/sql/drivers/sqlite/qsql_sqlite.h)47
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.cpp31
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.pri2
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2_p.h (renamed from src/sql/drivers/sqlite2/qsql_sqlite2.h)44
-rw-r--r--src/sql/drivers/tds/qsql_tds.cpp66
-rw-r--r--src/sql/drivers/tds/qsql_tds.pri2
-rw-r--r--src/sql/drivers/tds/qsql_tds_p.h (renamed from src/sql/drivers/tds/qsql_tds.h)41
-rw-r--r--src/sql/kernel/qsql.h4
-rw-r--r--src/sql/kernel/qsqldatabase.cpp18
-rw-r--r--src/sql/kernel/qsqldatabase.h4
-rw-r--r--src/sql/kernel/qsqldriver.h4
-rw-r--r--src/sql/kernel/qsqldriverplugin.h4
-rw-r--r--src/sql/kernel/qsqlerror.cpp44
-rw-r--r--src/sql/kernel/qsqlerror.h15
-rw-r--r--src/sql/kernel/qsqlfield.h4
-rw-r--r--src/sql/kernel/qsqlindex.h4
-rw-r--r--src/sql/kernel/qsqlquery.cpp14
-rw-r--r--src/sql/kernel/qsqlquery.h4
-rw-r--r--src/sql/kernel/qsqlrecord.h4
-rw-r--r--src/sql/kernel/qsqlresult.cpp59
-rw-r--r--src/sql/kernel/qsqlresult.h10
-rw-r--r--src/sql/kernel/qsqlresult_p.h8
-rw-r--r--src/sql/models/qsqlquerymodel.h4
-rw-r--r--src/sql/models/qsqlquerymodel_p.h2
-rw-r--r--src/sql/models/qsqlrelationaldelegate.h4
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.cpp2
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.h4
-rw-r--r--src/sql/models/qsqltablemodel.h4
-rw-r--r--src/src.pro62
-rw-r--r--src/testlib/3rdparty/linux_perf_event_p.h615
-rw-r--r--src/testlib/doc/src/qttestlib-manual.qdoc8
-rw-r--r--src/testlib/qabstracttestlogger.cpp4
-rw-r--r--src/testlib/qbenchmark.cpp5
-rw-r--r--src/testlib/qbenchmark.h4
-rw-r--r--src/testlib/qbenchmark_p.h12
-rw-r--r--src/testlib/qbenchmarkmetric.cpp124
-rw-r--r--src/testlib/qbenchmarkmetric.h27
-rw-r--r--src/testlib/qbenchmarkmetric_p.h4
-rw-r--r--src/testlib/qbenchmarkperfevents.cpp607
-rw-r--r--src/testlib/qbenchmarkperfevents_p.h88
-rw-r--r--src/testlib/qplaintestlogger.cpp2
-rw-r--r--src/testlib/qsignalspy.h21
-rw-r--r--src/testlib/qsignalspy.qdoc2
-rw-r--r--src/testlib/qtest.h87
-rw-r--r--src/testlib/qtest_global.h4
-rw-r--r--src/testlib/qtest_gui.h4
-rw-r--r--src/testlib/qtest_widgets.h2
-rw-r--r--src/testlib/qtestaccessible.h6
-rw-r--r--src/testlib/qtestassert.h4
-rw-r--r--src/testlib/qtestcase.cpp92
-rw-r--r--src/testlib/qtestcase.h4
-rw-r--r--src/testlib/qtestcoreelement_p.h4
-rw-r--r--src/testlib/qtestcorelist_p.h4
-rw-r--r--src/testlib/qtestdata.h4
-rw-r--r--src/testlib/qtestelement_p.h4
-rw-r--r--src/testlib/qtestelementattribute_p.h4
-rw-r--r--src/testlib/qtestevent.h4
-rw-r--r--src/testlib/qtestevent.qdoc2
-rw-r--r--src/testlib/qtesteventloop.h4
-rw-r--r--src/testlib/qtestkeyboard.h4
-rw-r--r--src/testlib/qtestmouse.h5
-rw-r--r--src/testlib/qtestspontaneevent.h6
-rw-r--r--src/testlib/qtestsystem.h4
-rw-r--r--src/testlib/qtesttouch.h5
-rw-r--r--src/testlib/qtestxunitstreamer_p.h4
-rw-r--r--src/testlib/testlib.pro8
-rw-r--r--src/tools/bootstrap-dbus/bootstrap-dbus.pro32
-rw-r--r--src/tools/bootstrap/bootstrap.pro47
-rw-r--r--src/tools/moc/generator.cpp50
-rw-r--r--src/tools/moc/keywords.cpp2
-rw-r--r--src/tools/moc/moc.cpp12
-rw-r--r--src/tools/moc/moc.h2
-rw-r--r--src/tools/moc/moc.pro1
-rw-r--r--src/tools/moc/ppkeywords.cpp2
-rw-r--r--src/tools/moc/util/generate_keywords.cpp9
-rw-r--r--src/tools/moc/utils.h8
-rw-r--r--src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp10
-rw-r--r--src/tools/qdbuscpp2xml/qdbuscpp2xml.pro26
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp4
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.pro24
-rw-r--r--src/tools/qdoc/qdoc.pro6
-rw-r--r--src/tools/qdoc/qmlcodeparser.cpp2
-rw-r--r--src/tools/qdoc/qmlmarkupvisitor.cpp2
-rw-r--r--src/tools/qdoc/qmlmarkupvisitor.h2
-rw-r--r--src/tools/qdoc/qmlparser/parser.pri (renamed from src/tools/qdoc/qmlparser/qmlparser.pri)7
-rw-r--r--src/tools/qdoc/qmlparser/qqmljs.g171
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsast.cpp35
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsast_p.h119
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsastfwd_p.h13
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsastvisitor_p.h12
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsengine_p.cpp8
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsengine_p.h4
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsgrammar.cpp1751
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsgrammar_p.h47
-rw-r--r--src/tools/qdoc/qmlparser/qqmljskeywords_p.h96
-rw-r--r--src/tools/qdoc/qmlparser/qqmljslexer.cpp573
-rw-r--r--src/tools/qdoc/qmlparser/qqmljslexer_p.h28
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsmemorypool_p.h1
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsparser.cpp453
-rw-r--r--src/tools/qdoc/qmlparser/qqmljsparser_p.h24
-rw-r--r--src/tools/rcc/main.cpp4
-rw-r--r--src/tools/rcc/rcc.h4
-rw-r--r--src/tools/rcc/rcc.pro1
-rw-r--r--src/tools/tools.pro43
-rw-r--r--src/tools/uic/cpp/cppwriteincludes.cpp6
-rw-r--r--src/tools/uic/customwidgetsinfo.h1
-rw-r--r--src/tools/uic/driver.cpp2
-rw-r--r--src/tools/uic/qclass_lib_map.h18
-rw-r--r--src/widgets/accessible/accessible.pri2
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp8
-rw-r--r--src/widgets/accessible/qaccessiblewidget_p.h (renamed from src/widgets/accessible/qaccessiblewidget.h)7
-rw-r--r--src/widgets/dialogs/qcolordialog.cpp7
-rw-r--r--src/widgets/dialogs/qcolordialog.h6
-rw-r--r--src/widgets/dialogs/qcolordialog_p.h2
-rw-r--r--src/widgets/dialogs/qdialog.cpp2
-rw-r--r--src/widgets/dialogs/qdialog.h6
-rw-r--r--src/widgets/dialogs/qdialog_p.h2
-rw-r--r--src/widgets/dialogs/qerrormessage.cpp2
-rw-r--r--src/widgets/dialogs/qerrormessage.h6
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp6
-rw-r--r--src/widgets/dialogs/qfiledialog.h6
-rw-r--r--src/widgets/dialogs/qfiledialog.ui2
-rw-r--r--src/widgets/dialogs/qfiledialog_embedded.ui2
-rw-r--r--src/widgets/dialogs/qfiledialog_p.h4
-rw-r--r--src/widgets/dialogs/qfileinfogatherer.cpp2
-rw-r--r--src/widgets/dialogs/qfileinfogatherer_p.h2
-rw-r--r--src/widgets/dialogs/qfilesystemmodel.cpp4
-rw-r--r--src/widgets/dialogs/qfilesystemmodel.h6
-rw-r--r--src/widgets/dialogs/qfilesystemmodel_p.h2
-rw-r--r--src/widgets/dialogs/qfontdialog.cpp2
-rw-r--r--src/widgets/dialogs/qfontdialog.h6
-rw-r--r--src/widgets/dialogs/qfontdialog_p.h2
-rw-r--r--src/widgets/dialogs/qfscompleter_p.h2
-rw-r--r--src/widgets/dialogs/qinputdialog.cpp2
-rw-r--r--src/widgets/dialogs/qinputdialog.h6
-rw-r--r--src/widgets/dialogs/qmessagebox.cpp26
-rw-r--r--src/widgets/dialogs/qmessagebox.h10
-rw-r--r--src/widgets/dialogs/qprogressdialog.cpp6
-rw-r--r--src/widgets/dialogs/qprogressdialog.h6
-rw-r--r--src/widgets/dialogs/qsidebar.cpp2
-rw-r--r--src/widgets/dialogs/qsidebar_p.h2
-rw-r--r--src/widgets/dialogs/qwizard.cpp44
-rw-r--r--src/widgets/dialogs/qwizard.h6
-rw-r--r--src/widgets/dialogs/qwizard_win.cpp181
-rw-r--r--src/widgets/dialogs/qwizard_win_p.h17
-rw-r--r--src/widgets/doc/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp2
-rw-r--r--src/widgets/doc/snippets/customviewstyle.cpp2
-rw-r--r--src/widgets/doc/snippets/javastyle.cpp20
-rw-r--r--src/widgets/doc/snippets/layouts/layouts.cpp6
-rw-r--r--src/widgets/doc/snippets/mainwindowsnippet.cpp8
-rw-r--r--src/widgets/doc/snippets/mdiareasnippets.cpp2
-rw-r--r--src/widgets/doc/snippets/myscrollarea.cpp2
-rw-r--r--src/widgets/doc/snippets/qtablewidget-using/mainwindow.cpp2
-rw-r--r--src/widgets/doc/snippets/simplemodel-use/main.cpp2
-rw-r--r--src/widgets/doc/snippets/stringlistmodel/model.cpp4
-rw-r--r--src/widgets/doc/snippets/timeline/main.cpp8
-rw-r--r--src/widgets/doc/src/model-view-programming.qdoc2
-rw-r--r--src/widgets/doc/src/widgets-and-layouts/focus.qdoc6
-rw-r--r--src/widgets/doc/src/widgets-and-layouts/layout.qdoc14
-rw-r--r--src/widgets/doc/src/windows-and-dialogs/dialogs.qdoc4
-rw-r--r--src/widgets/doc/src/windows-and-dialogs/mainwindow.qdoc2
-rw-r--r--src/widgets/effects/qgraphicseffect.cpp2
-rw-r--r--src/widgets/effects/qgraphicseffect.h5
-rw-r--r--src/widgets/effects/qgraphicseffect_p.h2
-rw-r--r--src/widgets/effects/qpixmapfilter.cpp2
-rw-r--r--src/widgets/effects/qpixmapfilter_p.h6
-rw-r--r--src/widgets/graphicsview/qgraph_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsgridlayout.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsgridlayout.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp75
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsitem_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsitemanimation.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsitemanimation.h6
-rw-r--r--src/widgets/graphicsview/qgraphicslayout.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicslayout.h6
-rw-r--r--src/widgets/graphicsview/qgraphicslayout_p.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicslayout_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicslayoutitem.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicslayoutitem.h6
-rw-r--r--src/widgets/graphicsview/qgraphicslayoutitem_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicslinearlayout.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicslinearlayout.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp102
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.h7
-rw-r--r--src/widgets/graphicsview/qgraphicsscene_bsp.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsscene_bsp_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsscene_p.h5
-rw-r--r--src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicssceneevent.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicssceneevent.h6
-rw-r--r--src/widgets/graphicsview/qgraphicssceneindex.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicssceneindex_p.h4
-rw-r--r--src/widgets/graphicsview/qgraphicsscenelinearindex.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicsscenelinearindex_p.h4
-rw-r--r--src/widgets/graphicsview/qgraphicstransform.h5
-rw-r--r--src/widgets/graphicsview/qgraphicstransform_p.h2
-rw-r--r--src/widgets/graphicsview/qgraphicsview.cpp135
-rw-r--r--src/widgets/graphicsview/qgraphicsview.h12
-rw-r--r--src/widgets/graphicsview/qgraphicsview_p.h5
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.h6
-rw-r--r--src/widgets/graphicsview/qgraphicswidget_p.cpp106
-rw-r--r--src/widgets/graphicsview/qgraphicswidget_p.h2
-rw-r--r--src/widgets/graphicsview/qgridlayoutengine.cpp2
-rw-r--r--src/widgets/graphicsview/qgridlayoutengine_p.h2
-rw-r--r--src/widgets/graphicsview/qsimplex_p.cpp2
-rw-r--r--src/widgets/graphicsview/qsimplex_p.h2
-rw-r--r--src/widgets/itemviews/qabstractitemdelegate.cpp2
-rw-r--r--src/widgets/itemviews/qabstractitemdelegate.h6
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp27
-rw-r--r--src/widgets/itemviews/qabstractitemview.h6
-rw-r--r--src/widgets/itemviews/qabstractitemview_p.h2
-rw-r--r--src/widgets/itemviews/qbsptree.cpp2
-rw-r--r--src/widgets/itemviews/qbsptree_p.h2
-rw-r--r--src/widgets/itemviews/qcolumnview.cpp2
-rw-r--r--src/widgets/itemviews/qcolumnview.h6
-rw-r--r--src/widgets/itemviews/qcolumnview_p.h2
-rw-r--r--src/widgets/itemviews/qcolumnviewgrip.cpp2
-rw-r--r--src/widgets/itemviews/qcolumnviewgrip_p.h2
-rw-r--r--src/widgets/itemviews/qdatawidgetmapper.cpp2
-rw-r--r--src/widgets/itemviews/qdatawidgetmapper.h6
-rw-r--r--src/widgets/itemviews/qdirmodel.cpp2
-rw-r--r--src/widgets/itemviews/qdirmodel.h6
-rw-r--r--src/widgets/itemviews/qfileiconprovider.cpp2
-rw-r--r--src/widgets/itemviews/qfileiconprovider.h6
-rw-r--r--src/widgets/itemviews/qheaderview.cpp2
-rw-r--r--src/widgets/itemviews/qheaderview.h6
-rw-r--r--src/widgets/itemviews/qheaderview_p.h2
-rw-r--r--src/widgets/itemviews/qitemdelegate.cpp2
-rw-r--r--src/widgets/itemviews/qitemdelegate.h6
-rw-r--r--src/widgets/itemviews/qitemeditorfactory.cpp2
-rw-r--r--src/widgets/itemviews/qitemeditorfactory.h6
-rw-r--r--src/widgets/itemviews/qitemeditorfactory_p.h2
-rw-r--r--src/widgets/itemviews/qlistview.cpp2
-rw-r--r--src/widgets/itemviews/qlistview.h6
-rw-r--r--src/widgets/itemviews/qlistview_p.h2
-rw-r--r--src/widgets/itemviews/qlistwidget.cpp2
-rw-r--r--src/widgets/itemviews/qlistwidget.h6
-rw-r--r--src/widgets/itemviews/qlistwidget_p.h2
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.cpp2
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.h6
-rw-r--r--src/widgets/itemviews/qtableview.cpp2
-rw-r--r--src/widgets/itemviews/qtableview.h6
-rw-r--r--src/widgets/itemviews/qtableview_p.h2
-rw-r--r--src/widgets/itemviews/qtablewidget.cpp2
-rw-r--r--src/widgets/itemviews/qtablewidget.h6
-rw-r--r--src/widgets/itemviews/qtablewidget_p.h2
-rw-r--r--src/widgets/itemviews/qtreeview.cpp52
-rw-r--r--src/widgets/itemviews/qtreeview.h6
-rw-r--r--src/widgets/itemviews/qtreeview_p.h4
-rw-r--r--src/widgets/itemviews/qtreewidget.cpp2
-rw-r--r--src/widgets/itemviews/qtreewidget.h6
-rw-r--r--src/widgets/itemviews/qtreewidget_p.h2
-rw-r--r--src/widgets/itemviews/qtreewidgetitemiterator.cpp11
-rw-r--r--src/widgets/itemviews/qtreewidgetitemiterator.h6
-rw-r--r--src/widgets/itemviews/qtreewidgetitemiterator_p.h2
-rw-r--r--src/widgets/itemviews/qwidgetitemdata_p.h2
-rw-r--r--src/widgets/kernel/kernel.pri6
-rw-r--r--src/widgets/kernel/mac.pri2
-rw-r--r--src/widgets/kernel/qaction.cpp2
-rw-r--r--src/widgets/kernel/qaction.h6
-rw-r--r--src/widgets/kernel/qaction_p.h2
-rw-r--r--src/widgets/kernel/qactiongroup.cpp2
-rw-r--r--src/widgets/kernel/qactiongroup.h6
-rw-r--r--src/widgets/kernel/qapplication.cpp36
-rw-r--r--src/widgets/kernel/qapplication.h6
-rw-r--r--src/widgets/kernel/qapplication_p.h5
-rw-r--r--src/widgets/kernel/qapplication_qpa.cpp2
-rw-r--r--src/widgets/kernel/qboxlayout.cpp8
-rw-r--r--src/widgets/kernel/qboxlayout.h6
-rw-r--r--src/widgets/kernel/qdesktopwidget.cpp2
-rw-r--r--src/widgets/kernel/qdesktopwidget.h6
-rw-r--r--src/widgets/kernel/qdesktopwidget.qdoc8
-rw-r--r--src/widgets/kernel/qdesktopwidget_qpa.cpp2
-rw-r--r--src/widgets/kernel/qdesktopwidget_qpa_p.h5
-rw-r--r--src/widgets/kernel/qformlayout.cpp2
-rw-r--r--src/widgets/kernel/qformlayout.h6
-rw-r--r--src/widgets/kernel/qgesture.cpp4
-rw-r--r--src/widgets/kernel/qgesture.h6
-rw-r--r--src/widgets/kernel/qgesture_p.h2
-rw-r--r--src/widgets/kernel/qgesturemanager.cpp2
-rw-r--r--src/widgets/kernel/qgesturemanager_p.h2
-rw-r--r--src/widgets/kernel/qgesturerecognizer.cpp2
-rw-r--r--src/widgets/kernel/qgesturerecognizer.h6
-rw-r--r--src/widgets/kernel/qgridlayout.cpp2
-rw-r--r--src/widgets/kernel/qgridlayout.h6
-rw-r--r--src/widgets/kernel/qlayout.cpp4
-rw-r--r--src/widgets/kernel/qlayout.h6
-rw-r--r--src/widgets/kernel/qlayout_p.h2
-rw-r--r--src/widgets/kernel/qlayoutengine.cpp2
-rw-r--r--src/widgets/kernel/qlayoutengine_p.h2
-rw-r--r--src/widgets/kernel/qlayoutitem.cpp36
-rw-r--r--src/widgets/kernel/qlayoutitem.h8
-rw-r--r--src/widgets/kernel/qshortcut.cpp2
-rw-r--r--src/widgets/kernel/qshortcut.h6
-rw-r--r--src/widgets/kernel/qsizepolicy.h6
-rw-r--r--src/widgets/kernel/qstackedlayout.cpp2
-rw-r--r--src/widgets/kernel/qstackedlayout.h6
-rw-r--r--src/widgets/kernel/qstandardgestures.cpp2
-rw-r--r--src/widgets/kernel/qstandardgestures_p.h2
-rw-r--r--src/widgets/kernel/qt_widgets_pch.h2
-rw-r--r--src/widgets/kernel/qtooltip.cpp2
-rw-r--r--src/widgets/kernel/qtooltip.h6
-rw-r--r--src/widgets/kernel/qwhatsthis.cpp2
-rw-r--r--src/widgets/kernel/qwhatsthis.h6
-rw-r--r--src/widgets/kernel/qwidget.cpp43
-rw-r--r--src/widgets/kernel/qwidget.h8
-rw-r--r--src/widgets/kernel/qwidget_p.h2
-rw-r--r--src/widgets/kernel/qwidget_qpa.cpp19
-rw-r--r--src/widgets/kernel/qwidgetaction.cpp2
-rw-r--r--src/widgets/kernel/qwidgetaction.h10
-rw-r--r--src/widgets/kernel/qwidgetaction_p.h4
-rw-r--r--src/widgets/kernel/qwidgetbackingstore.cpp2
-rw-r--r--src/widgets/kernel/qwidgetbackingstore_p.h2
-rw-r--r--src/widgets/kernel/qwidgetsfunctions_wince.h5
-rw-r--r--src/widgets/kernel/qwidgetsvariant.cpp2
-rw-r--r--src/widgets/kernel/qwidgetwindow.cpp63
-rw-r--r--src/widgets/kernel/qwidgetwindow_qpa_p.h13
-rw-r--r--src/widgets/kernel/qwindowcontainer.cpp218
-rw-r--r--src/widgets/kernel/qwindowcontainer_p.h (renamed from mkspecs/unsupported/linux-android-x86-g++/qplatformdefs.h)33
-rw-r--r--src/widgets/statemachine/qbasickeyeventtransition.cpp2
-rw-r--r--src/widgets/statemachine/qbasickeyeventtransition_p.h2
-rw-r--r--src/widgets/statemachine/qbasicmouseeventtransition.cpp2
-rw-r--r--src/widgets/statemachine/qbasicmouseeventtransition_p.h2
-rw-r--r--src/widgets/statemachine/qguistatemachine.cpp4
-rw-r--r--src/widgets/statemachine/qkeyeventtransition.cpp2
-rw-r--r--src/widgets/statemachine/qkeyeventtransition.h6
-rw-r--r--src/widgets/statemachine/qmouseeventtransition.cpp2
-rw-r--r--src/widgets/statemachine/qmouseeventtransition.h6
-rw-r--r--src/widgets/styles/images/toolbar-ext.pngbin0 -> 516 bytes
-rw-r--r--src/widgets/styles/images/toolbar-ext@2x.pngbin0 -> 505 bytes
-rw-r--r--src/widgets/styles/qandroidstyle.cpp1601
-rw-r--r--src/widgets/styles/qandroidstyle_p.h382
-rw-r--r--src/widgets/styles/qcommonstyle.cpp27
-rw-r--r--src/widgets/styles/qcommonstyle.h8
-rw-r--r--src/widgets/styles/qcommonstyle_p.h2
-rw-r--r--src/widgets/styles/qcommonstylepixmaps_p.h4
-rw-r--r--src/widgets/styles/qdrawutil.cpp6
-rw-r--r--src/widgets/styles/qdrawutil.h6
-rw-r--r--src/widgets/styles/qfusionstyle.cpp13
-rw-r--r--src/widgets/styles/qfusionstyle_p.h6
-rw-r--r--src/widgets/styles/qfusionstyle_p_p.h6
-rw-r--r--src/widgets/styles/qgtk2painter.cpp2
-rw-r--r--src/widgets/styles/qgtk2painter_p.h2
-rw-r--r--src/widgets/styles/qgtkglobal_p.h2
-rw-r--r--src/widgets/styles/qgtkpainter.cpp2
-rw-r--r--src/widgets/styles/qgtkpainter_p.h2
-rw-r--r--src/widgets/styles/qgtkstyle.cpp11
-rw-r--r--src/widgets/styles/qgtkstyle_p.cpp2
-rw-r--r--src/widgets/styles/qgtkstyle_p.h6
-rw-r--r--src/widgets/styles/qgtkstyle_p_p.h2
-rw-r--r--src/widgets/styles/qmacstyle.qdoc38
-rw-r--r--src/widgets/styles/qmacstyle_mac.mm109
-rw-r--r--src/widgets/styles/qmacstyle_mac_p.h6
-rw-r--r--src/widgets/styles/qmacstyle_mac_p_p.h2
-rw-r--r--src/widgets/styles/qproxystyle.cpp31
-rw-r--r--src/widgets/styles/qproxystyle.h9
-rw-r--r--src/widgets/styles/qproxystyle_p.h2
-rw-r--r--src/widgets/styles/qstyle.cpp7
-rw-r--r--src/widgets/styles/qstyle.h7
-rw-r--r--src/widgets/styles/qstyle.qrc2
-rw-r--r--src/widgets/styles/qstyle_p.h2
-rw-r--r--src/widgets/styles/qstyleanimation.cpp8
-rw-r--r--src/widgets/styles/qstyleanimation_p.h2
-rw-r--r--src/widgets/styles/qstylefactory.cpp14
-rw-r--r--src/widgets/styles/qstylefactory.h6
-rw-r--r--src/widgets/styles/qstylehelper.cpp2
-rw-r--r--src/widgets/styles/qstylehelper_p.h2
-rw-r--r--src/widgets/styles/qstyleoption.cpp24
-rw-r--r--src/widgets/styles/qstyleoption.h6
-rw-r--r--src/widgets/styles/qstylepainter.cpp2
-rw-r--r--src/widgets/styles/qstylepainter.h6
-rw-r--r--src/widgets/styles/qstyleplugin.cpp2
-rw-r--r--src/widgets/styles/qstyleplugin.h6
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp2
-rw-r--r--src/widgets/styles/qstylesheetstyle_default.cpp2
-rw-r--r--src/widgets/styles/qstylesheetstyle_p.h2
-rw-r--r--src/widgets/styles/qwindowscestyle.cpp2
-rw-r--r--src/widgets/styles/qwindowscestyle_p.h6
-rw-r--r--src/widgets/styles/qwindowscestyle_p_p.h2
-rw-r--r--src/widgets/styles/qwindowsmobilestyle.cpp126
-rw-r--r--src/widgets/styles/qwindowsmobilestyle_p.h6
-rw-r--r--src/widgets/styles/qwindowsmobilestyle_p_p.h2
-rw-r--r--src/widgets/styles/qwindowsstyle.cpp3
-rw-r--r--src/widgets/styles/qwindowsstyle_p.h6
-rw-r--r--src/widgets/styles/qwindowsstyle_p_p.h2
-rw-r--r--src/widgets/styles/qwindowsvistastyle.cpp32
-rw-r--r--src/widgets/styles/qwindowsvistastyle_p.h6
-rw-r--r--src/widgets/styles/qwindowsvistastyle_p_p.h2
-rw-r--r--src/widgets/styles/qwindowsxpstyle.cpp2
-rw-r--r--src/widgets/styles/qwindowsxpstyle_p.h6
-rw-r--r--src/widgets/styles/qwindowsxpstyle_p_p.h2
-rw-r--r--src/widgets/styles/styles.pri10
-rw-r--r--src/widgets/util/qcolormap.cpp2
-rw-r--r--src/widgets/util/qcolormap.h6
-rw-r--r--src/widgets/util/qcolormap.qdoc2
-rw-r--r--src/widgets/util/qcompleter.cpp4
-rw-r--r--src/widgets/util/qcompleter.h6
-rw-r--r--src/widgets/util/qcompleter_p.h2
-rw-r--r--src/widgets/util/qflickgesture.cpp2
-rw-r--r--src/widgets/util/qflickgesture_p.h2
-rw-r--r--src/widgets/util/qscroller.cpp4
-rw-r--r--src/widgets/util/qscroller.h6
-rw-r--r--src/widgets/util/qscroller_mac.mm2
-rw-r--r--src/widgets/util/qscroller_p.h2
-rw-r--r--src/widgets/util/qscrollerproperties.cpp4
-rw-r--r--src/widgets/util/qscrollerproperties.h6
-rw-r--r--src/widgets/util/qscrollerproperties_p.h2
-rw-r--r--src/widgets/util/qsystemtrayicon.cpp6
-rw-r--r--src/widgets/util/qsystemtrayicon.h6
-rw-r--r--src/widgets/util/qsystemtrayicon_p.h2
-rw-r--r--src/widgets/util/qsystemtrayicon_qpa.cpp2
-rw-r--r--src/widgets/util/qsystemtrayicon_win.cpp26
-rw-r--r--src/widgets/util/qsystemtrayicon_wince.cpp4
-rw-r--r--src/widgets/util/qsystemtrayicon_x11.cpp2
-rw-r--r--src/widgets/util/qundogroup.cpp2
-rw-r--r--src/widgets/util/qundogroup.h6
-rw-r--r--src/widgets/util/qundostack.cpp8
-rw-r--r--src/widgets/util/qundostack.h6
-rw-r--r--src/widgets/util/qundostack_p.h2
-rw-r--r--src/widgets/util/qundoview.cpp2
-rw-r--r--src/widgets/util/qundoview.h6
-rw-r--r--src/widgets/util/util.pri2
-rw-r--r--src/widgets/widgets/qabstractbutton.cpp4
-rw-r--r--src/widgets/widgets/qabstractbutton.h6
-rw-r--r--src/widgets/widgets/qabstractbutton_p.h2
-rw-r--r--src/widgets/widgets/qabstractscrollarea.cpp4
-rw-r--r--src/widgets/widgets/qabstractscrollarea.h6
-rw-r--r--src/widgets/widgets/qabstractscrollarea_p.h2
-rw-r--r--src/widgets/widgets/qabstractslider.cpp4
-rw-r--r--src/widgets/widgets/qabstractslider.h6
-rw-r--r--src/widgets/widgets/qabstractslider_p.h4
-rw-r--r--src/widgets/widgets/qabstractspinbox.cpp40
-rw-r--r--src/widgets/widgets/qabstractspinbox.h6
-rw-r--r--src/widgets/widgets/qabstractspinbox_p.h2
-rw-r--r--src/widgets/widgets/qbuttongroup.cpp6
-rw-r--r--src/widgets/widgets/qbuttongroup.h6
-rw-r--r--src/widgets/widgets/qcalendartextnavigator_p.h2
-rw-r--r--src/widgets/widgets/qcalendarwidget.cpp4
-rw-r--r--src/widgets/widgets/qcalendarwidget.h6
-rw-r--r--src/widgets/widgets/qcheckbox.cpp2
-rw-r--r--src/widgets/widgets/qcheckbox.h6
-rw-r--r--src/widgets/widgets/qcocoatoolbardelegate_mac.mm2
-rw-r--r--src/widgets/widgets/qcocoatoolbardelegate_mac_p.h2
-rw-r--r--src/widgets/widgets/qcombobox.cpp2
-rw-r--r--src/widgets/widgets/qcombobox.h6
-rw-r--r--src/widgets/widgets/qcombobox_p.h6
-rw-r--r--src/widgets/widgets/qcommandlinkbutton.cpp2
-rw-r--r--src/widgets/widgets/qcommandlinkbutton.h6
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp18
-rw-r--r--src/widgets/widgets/qdatetimeedit.h6
-rw-r--r--src/widgets/widgets/qdatetimeedit_p.h2
-rw-r--r--src/widgets/widgets/qdial.cpp2
-rw-r--r--src/widgets/widgets/qdial.h6
-rw-r--r--src/widgets/widgets/qdialogbuttonbox.cpp2
-rw-r--r--src/widgets/widgets/qdialogbuttonbox.h6
-rw-r--r--src/widgets/widgets/qdockarealayout.cpp4
-rw-r--r--src/widgets/widgets/qdockarealayout_p.h2
-rw-r--r--src/widgets/widgets/qdockwidget.cpp2
-rw-r--r--src/widgets/widgets/qdockwidget.h6
-rw-r--r--src/widgets/widgets/qdockwidget_p.h2
-rw-r--r--src/widgets/widgets/qeffects.cpp6
-rw-r--r--src/widgets/widgets/qeffects_p.h2
-rw-r--r--src/widgets/widgets/qfocusframe.cpp2
-rw-r--r--src/widgets/widgets/qfocusframe.h6
-rw-r--r--src/widgets/widgets/qfontcombobox.cpp39
-rw-r--r--src/widgets/widgets/qfontcombobox.h6
-rw-r--r--src/widgets/widgets/qframe.cpp2
-rw-r--r--src/widgets/widgets/qframe.h6
-rw-r--r--src/widgets/widgets/qframe_p.h2
-rw-r--r--src/widgets/widgets/qgroupbox.cpp6
-rw-r--r--src/widgets/widgets/qgroupbox.h8
-rw-r--r--src/widgets/widgets/qlabel.cpp16
-rw-r--r--src/widgets/widgets/qlabel.h6
-rw-r--r--src/widgets/widgets/qlabel_p.h2
-rw-r--r--src/widgets/widgets/qlcdnumber.cpp2
-rw-r--r--src/widgets/widgets/qlcdnumber.h6
-rw-r--r--src/widgets/widgets/qlineedit.cpp13
-rw-r--r--src/widgets/widgets/qlineedit.h6
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp4
-rw-r--r--src/widgets/widgets/qlineedit_p.h2
-rw-r--r--src/widgets/widgets/qmaccocoaviewcontainer_mac.h6
-rw-r--r--src/widgets/widgets/qmaccocoaviewcontainer_mac.mm4
-rw-r--r--src/widgets/widgets/qmacnativewidget_mac.h6
-rw-r--r--src/widgets/widgets/qmacnativewidget_mac.mm2
-rw-r--r--src/widgets/widgets/qmainwindow.cpp2
-rw-r--r--src/widgets/widgets/qmainwindow.h6
-rw-r--r--src/widgets/widgets/qmainwindowlayout.cpp2
-rw-r--r--src/widgets/widgets/qmainwindowlayout_mac.mm2
-rw-r--r--src/widgets/widgets/qmainwindowlayout_p.h2
-rw-r--r--src/widgets/widgets/qmdiarea.cpp2
-rw-r--r--src/widgets/widgets/qmdiarea.h6
-rw-r--r--src/widgets/widgets/qmdiarea_p.h2
-rw-r--r--src/widgets/widgets/qmdisubwindow.cpp10
-rw-r--r--src/widgets/widgets/qmdisubwindow.h6
-rw-r--r--src/widgets/widgets/qmdisubwindow_p.h2
-rw-r--r--src/widgets/widgets/qmenu.cpp149
-rw-r--r--src/widgets/widgets/qmenu.h15
-rw-r--r--src/widgets/widgets/qmenu_p.h6
-rw-r--r--src/widgets/widgets/qmenu_wince.cpp26
-rw-r--r--src/widgets/widgets/qmenu_wince.rc32
-rw-r--r--src/widgets/widgets/qmenu_wince_resource_p.h5
-rw-r--r--src/widgets/widgets/qmenubar.cpp2
-rw-r--r--src/widgets/widgets/qmenubar.h6
-rw-r--r--src/widgets/widgets/qmenubar_p.h2
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp2
-rw-r--r--src/widgets/widgets/qplaintextedit.h6
-rw-r--r--src/widgets/widgets/qplaintextedit_p.h2
-rw-r--r--src/widgets/widgets/qprogressbar.cpp48
-rw-r--r--src/widgets/widgets/qprogressbar.h9
-rw-r--r--src/widgets/widgets/qpushbutton.cpp2
-rw-r--r--src/widgets/widgets/qpushbutton.h8
-rw-r--r--src/widgets/widgets/qpushbutton_p.h2
-rw-r--r--src/widgets/widgets/qradiobutton.cpp2
-rw-r--r--src/widgets/widgets/qradiobutton.h6
-rw-r--r--src/widgets/widgets/qrubberband.cpp2
-rw-r--r--src/widgets/widgets/qrubberband.h6
-rw-r--r--src/widgets/widgets/qscrollarea.cpp4
-rw-r--r--src/widgets/widgets/qscrollarea.h6
-rw-r--r--src/widgets/widgets/qscrollarea_p.h4
-rw-r--r--src/widgets/widgets/qscrollbar.cpp2
-rw-r--r--src/widgets/widgets/qscrollbar.h6
-rw-r--r--src/widgets/widgets/qscrollbar_p.h2
-rw-r--r--src/widgets/widgets/qsizegrip.cpp2
-rw-r--r--src/widgets/widgets/qsizegrip.h6
-rw-r--r--src/widgets/widgets/qslider.cpp2
-rw-r--r--src/widgets/widgets/qslider.h6
-rw-r--r--src/widgets/widgets/qspinbox.cpp3
-rw-r--r--src/widgets/widgets/qspinbox.h6
-rw-r--r--src/widgets/widgets/qsplashscreen.cpp4
-rw-r--r--src/widgets/widgets/qsplashscreen.h6
-rw-r--r--src/widgets/widgets/qsplitter.cpp4
-rw-r--r--src/widgets/widgets/qsplitter.h6
-rw-r--r--src/widgets/widgets/qsplitter_p.h2
-rw-r--r--src/widgets/widgets/qstackedwidget.cpp2
-rw-r--r--src/widgets/widgets/qstackedwidget.h6
-rw-r--r--src/widgets/widgets/qstatusbar.cpp8
-rw-r--r--src/widgets/widgets/qstatusbar.h6
-rw-r--r--src/widgets/widgets/qtabbar.cpp4
-rw-r--r--src/widgets/widgets/qtabbar.h6
-rw-r--r--src/widgets/widgets/qtabbar_p.h2
-rw-r--r--src/widgets/widgets/qtabwidget.cpp2
-rw-r--r--src/widgets/widgets/qtabwidget.h6
-rw-r--r--src/widgets/widgets/qtextbrowser.cpp31
-rw-r--r--src/widgets/widgets/qtextbrowser.h6
-rw-r--r--src/widgets/widgets/qtextedit.cpp4
-rw-r--r--src/widgets/widgets/qtextedit.h6
-rw-r--r--src/widgets/widgets/qtextedit_p.h2
-rw-r--r--src/widgets/widgets/qtoolbar.cpp2
-rw-r--r--src/widgets/widgets/qtoolbar.h6
-rw-r--r--src/widgets/widgets/qtoolbar_p.h2
-rw-r--r--src/widgets/widgets/qtoolbararealayout.cpp6
-rw-r--r--src/widgets/widgets/qtoolbararealayout_p.h6
-rw-r--r--src/widgets/widgets/qtoolbarextension.cpp2
-rw-r--r--src/widgets/widgets/qtoolbarextension_p.h2
-rw-r--r--src/widgets/widgets/qtoolbarlayout.cpp4
-rw-r--r--src/widgets/widgets/qtoolbarlayout_p.h2
-rw-r--r--src/widgets/widgets/qtoolbarseparator.cpp2
-rw-r--r--src/widgets/widgets/qtoolbarseparator_p.h2
-rw-r--r--src/widgets/widgets/qtoolbox.cpp2
-rw-r--r--src/widgets/widgets/qtoolbox.h6
-rw-r--r--src/widgets/widgets/qtoolbutton.cpp2
-rw-r--r--src/widgets/widgets/qtoolbutton.h6
-rw-r--r--src/widgets/widgets/qwidgetanimator.cpp2
-rw-r--r--src/widgets/widgets/qwidgetanimator_p.h2
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol.cpp2
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol_p.h6
-rw-r--r--src/widgets/widgets/qwidgetresizehandler.cpp2
-rw-r--r--src/widgets/widgets/qwidgetresizehandler_p.h2
-rw-r--r--src/widgets/widgets/qwidgettextcontrol.cpp5
-rw-r--r--src/widgets/widgets/qwidgettextcontrol_p.h6
-rw-r--r--src/widgets/widgets/qwidgettextcontrol_p_p.h2
-rw-r--r--src/widgets/widgets/widgets.pri2
-rw-r--r--src/xml/dom/qdom.h4
-rw-r--r--src/xml/qtxmlglobal.h4
-rw-r--r--src/xml/sax/qxml.cpp4
-rw-r--r--src/xml/sax/qxml.h4
-rw-r--r--sync.profile9
-rw-r--r--tests/auto/android/AndroidManifest.xml37
-rw-r--r--tests/auto/android/res/layout/main.xml12
-rw-r--r--tests/auto/android/res/values/libs.xml19
-rw-r--r--tests/auto/android/res/values/strings.xml4
-rwxr-xr-xtests/auto/android/runtests.pl358
-rw-r--r--tests/auto/android/src/org/qtproject/qt5/android/QtActivity.java327
-rw-r--r--tests/auto/android/src/org/qtproject/qt5/android/QtInputConnection.java209
-rw-r--r--tests/auto/android/src/org/qtproject/qt5/android/QtNative.java421
-rw-r--r--tests/auto/android/src/org/qtproject/qt5/android/QtSurface.java163
-rw-r--r--tests/auto/auto.pro4
-rw-r--r--tests/auto/bic/data/QtGui.5.0.0.linux-gcc-amd64.txt151
-rw-r--r--tests/auto/bic/data/QtGui.5.0.0.linux-gcc-ia32.txt151
-rw-r--r--tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-amd64.txt201
-rw-r--r--tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-ia32.txt201
-rw-r--r--tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-amd64.txt201
-rw-r--r--tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-ia32.txt201
-rw-r--r--tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-amd64.txt201
-rw-r--r--tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-ia32.txt201
-rw-r--r--tests/auto/cmake/CMakeLists.txt5
-rw-r--r--tests/auto/cmake/test_openglextensions_module/CMakeLists.txt22
-rw-r--r--tests/auto/cmake/test_openglextensions_module/main.cpp56
-rw-r--r--tests/auto/cmake/test_umbrella_config/CMakeLists.txt20
-rw-r--r--tests/auto/cmake/test_umbrella_config/components_found/CMakeLists.txt18
-rw-r--r--tests/auto/cmake/test_umbrella_config/components_not_found/CMakeLists.txt17
-rw-r--r--tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp23
-rw-r--r--tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp10
-rw-r--r--tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp6
-rw-r--r--tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp6
-rw-r--r--tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp2
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp75
-rw-r--r--tests/auto/corelib/global/global.pro4
-rw-r--r--tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp7
-rw-r--r--tests/auto/corelib/global/qglobal/tst_qglobal.cpp31
-rw-r--r--tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro12
-rw-r--r--tests/auto/corelib/global/qglobalstatic/tst_qglobalstatic.cpp236
-rw-r--r--tests/auto/corelib/global/qlogging/tst_qlogging.cpp77
-rw-r--r--tests/auto/corelib/global/qrand/tst_qrand.cpp2
-rw-r--r--tests/auto/corelib/io/io.pro8
-rw-r--r--tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp2
-rw-r--r--tests/auto/corelib/io/qdebug/tst_qdebug.cpp54
-rw-r--r--tests/auto/corelib/io/qfile/stdinprocess/main.cpp2
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp27
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp149
-rw-r--r--tests/auto/corelib/io/qlockfile/qlockfile.pro3
-rw-r--r--tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper.cpp78
-rw-r--r--tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper.pro7
-rw-r--r--tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp379
-rw-r--r--tests/auto/corelib/io/qlockfile/tst_qlockfile.pro6
-rw-r--r--tests/auto/corelib/io/qprocess/testForwarding/testForwarding.pro1
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro1
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro1
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro1
-rw-r--r--tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro1
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp2
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp2
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro1
-rw-r--r--tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro1
-rw-r--r--tests/auto/corelib/io/qprocess/tst_qprocess.cpp21
-rw-r--r--tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp2
-rw-r--r--tests/auto/corelib/io/qsavefile/qsavefile.pro5
-rw-r--r--tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp272
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp2
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp48
-rw-r--r--tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp14
-rw-r--r--tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp13
-rw-r--r--tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp5
-rw-r--r--tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp2
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp189
-rw-r--r--tests/auto/corelib/json/tst_qtjson.cpp136
-rw-r--r--tests/auto/corelib/kernel/kernel.pro7
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp12
-rw-r--r--tests/auto/corelib/kernel/qmath/tst_qmath.cpp77
-rw-r--r--tests/auto/corelib/kernel/qmetamethod/qmetamethod.pro2
-rw-r--r--tests/auto/corelib/kernel/qmetaobjectbuilder/qmetaobjectbuilder.pro2
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp14
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp393
-rw-r--r--tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp7
-rw-r--r--tests/auto/corelib/kernel/qsharedmemory/test/tst_qsharedmemory.cpp2
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/lib/mylib.c6
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro2
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp6
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp69
-rw-r--r--tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp2
-rw-r--r--tests/auto/corelib/statemachine/qstate/tst_qstate.cpp16
-rw-r--r--tests/auto/corelib/thread/qfuture/tst_qfuture.cpp32
-rw-r--r--tests/auto/corelib/thread/qfuturewatcher/tst_qfuturewatcher.cpp12
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp2
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.h4
-rw-r--r--tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp36
-rw-r--r--tests/auto/corelib/tools/qchar/tst_qchar.cpp68
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp73
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp48
-rw-r--r--tests/auto/corelib/tools/qhash/tst_qhash.cpp34
-rw-r--r--tests/auto/corelib/tools/qlocale/tst_qlocale.cpp30
-rw-r--r--tests/auto/corelib/tools/qmap/tst_qmap.cpp161
-rw-r--r--tests/auto/corelib/tools/qmargins/tst_qmargins.cpp46
-rw-r--r--tests/auto/corelib/tools/qmessageauthenticationcode/.gitignore1
-rw-r--r--tests/auto/corelib/tools/qmessageauthenticationcode/qmessageauthenticationcode.pro7
-rw-r--r--tests/auto/corelib/tools/qmessageauthenticationcode/tst_qmessageauthenticationcode.cpp151
-rw-r--r--tests/auto/corelib/tools/qpoint/tst_qpoint.cpp25
-rw-r--r--tests/auto/corelib/tools/qpointf/tst_qpointf.cpp26
-rw-r--r--tests/auto/corelib/tools/qqueue/tst_qqueue.cpp18
-rw-r--r--tests/auto/corelib/tools/qrect/tst_qrect.cpp21
-rw-r--r--tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp217
-rw-r--r--tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.h5
-rw-r--r--tests/auto/corelib/tools/qset/tst_qset.cpp22
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.pri2
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp122
-rw-r--r--tests/auto/corelib/tools/qstring/tst_qstring.cpp107
-rw-r--r--tests/auto/corelib/tools/qstringref/tst_qstringref.cpp954
-rw-r--r--tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp23
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp24
-rw-r--r--tests/auto/corelib/tools/qvector/tst_qvector.cpp98
-rw-r--r--tests/auto/corelib/tools/tools.pro1
-rw-r--r--tests/auto/corelib/xml/xml.pro2
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp96
-rw-r--r--tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp13
-rw-r--r--tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp26
-rw-r--r--tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp7
-rw-r--r--tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp25
-rw-r--r--tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp4
-rw-r--r--tests/auto/gui/image/image.pro3
-rw-r--r--tests/auto/gui/image/qicon/tst_qicon.cpp2
-rw-r--r--tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp2
-rw-r--r--tests/auto/gui/image/qimagereader/images/black.xpm30
-rw-r--r--tests/auto/gui/image/qimagereader/tst_qimagereader.cpp21
-rw-r--r--tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp21
-rw-r--r--tests/auto/gui/image/qpicture/tst_qpicture.cpp39
-rw-r--r--tests/auto/gui/image/qpixmap/tst_qpixmap.cpp23
-rw-r--r--tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp2
-rw-r--r--tests/auto/gui/kernel/kernel.pro1
-rw-r--r--tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp102
-rw-r--r--tests/auto/gui/kernel/qsurfaceformat/qsurfaceformat.pro8
-rw-r--r--tests/auto/gui/kernel/qsurfaceformat/tst_qsurfaceformat.cpp102
-rw-r--r--tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp6
-rw-r--r--tests/auto/gui/kernel/qwindow/tst_qwindow.cpp57
-rw-r--r--tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp174
-rw-r--r--tests/auto/gui/painting/qpainter/qpainter.pro1
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp3
-rw-r--r--tests/auto/gui/painting/qpathclipper/paths.cpp14
-rw-r--r--tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp2
-rw-r--r--tests/auto/gui/qopengl/tst_qopengl.cpp112
-rw-r--r--tests/auto/gui/text/qfontcache/.gitignore1
-rw-r--r--tests/auto/gui/text/qfontcache/qfontcache.pro8
-rw-r--r--tests/auto/gui/text/qfontcache/tst_qfontcache.cpp148
-rw-r--r--tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp2
-rw-r--r--tests/auto/gui/text/qstatictext/tst_qstatictext.cpp2
-rw-r--r--tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp10
-rw-r--r--tests/auto/gui/text/qtextformat/tst_qtextformat.cpp2
-rw-r--r--tests/auto/gui/text/qtextlayout/qtextlayout.pro1
-rw-r--r--tests/auto/gui/text/qtextscriptengine/generate/generate.pro2
-rw-r--r--tests/auto/gui/text/qtextscriptengine/generate/main.cpp2
-rw-r--r--tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp902
-rw-r--r--tests/auto/gui/text/text.pro2
-rw-r--r--tests/auto/gui/util/qregularexpressionvalidator/.gitignore1
-rw-r--r--tests/auto/gui/util/qregularexpressionvalidator/qregularexpressionvalidator.pro4
-rw-r--r--tests/auto/gui/util/qregularexpressionvalidator/tst_qregularexpressionvalidator.cpp120
-rw-r--r--tests/auto/gui/util/util.pro1
-rw-r--r--tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp6
-rw-r--r--tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp2
-rw-r--r--tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp2
-rw-r--r--tests/auto/network/access/qnetworkreply/echo/main.cpp2
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp96
-rw-r--r--tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp8
-rw-r--r--tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp4
-rw-r--r--tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp60
-rw-r--r--tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp2
-rw-r--r--tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp2
-rw-r--r--tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp6
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp4
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/main.cpp2
-rw-r--r--tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp1
-rw-r--r--tests/auto/network/socket/qudpsocket/clientserver/main.cpp4
-rw-r--r--tests/auto/network/socket/qudpsocket/udpServer/main.cpp6
-rw-r--r--tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp2
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/ca.crt22
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/inter.crt22
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/leaf.crt23
-rw-r--r--tests/auto/network/ssl/qsslsocket/certs/leaf.key32
-rw-r--r--tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp84
-rw-r--r--tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp5
-rw-r--r--tests/auto/other/collections/tst_collections.cpp2
-rw-r--r--tests/auto/other/lancelot/lancelot.pro1
-rw-r--r--tests/auto/other/lancelot/scripts/background.qps26
-rw-r--r--tests/auto/other/lancelot/scripts/bitmaps.qps4
-rw-r--r--tests/auto/other/lancelot/scripts/clippaths.qps12
-rw-r--r--tests/auto/other/lancelot/scripts/cliprects.qps12
-rw-r--r--tests/auto/other/lancelot/scripts/conical_gradients.qps2
-rw-r--r--tests/auto/other/lancelot/scripts/dashes.qps38
-rw-r--r--tests/auto/other/lancelot/scripts/deviceclipping.qps2
-rw-r--r--tests/auto/other/lancelot/scripts/pixmap_scaling.qps38
-rw-r--r--tests/auto/other/lancelot/scripts/pixmap_subpixel.qps12
-rw-r--r--tests/auto/other/lancelot/scripts/pixmaps.qps10
-rw-r--r--tests/auto/other/lancelot/scripts/rasterops.qps4
-rw-r--r--tests/auto/other/lancelot/scripts/sizes.qps6
-rw-r--r--tests/auto/other/lancelot/scripts/statictext.qps34
-rw-r--r--tests/auto/other/lancelot/scripts/text.qps84
-rw-r--r--tests/auto/other/lancelot/scripts/tiled_pixmap.qps10
-rw-r--r--tests/auto/other/macgui/guitest.cpp22
-rw-r--r--tests/auto/other/macgui/guitest.h8
-rw-r--r--tests/auto/other/macgui/tst_macgui.cpp6
-rw-r--r--tests/auto/other/macnativeevents/tst_macnativeevents.cpp2
-rw-r--r--tests/auto/other/other.pro8
-rw-r--r--tests/auto/other/qaccessibility/qaccessibility.pro2
-rw-r--r--tests/auto/other/qaccessibility/tst_qaccessibility.cpp104
-rw-r--r--tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp2
-rw-r--r--tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp2
-rw-r--r--tests/auto/other/windowsmobile/testQMenuBar/main.cpp2
-rw-r--r--tests/auto/sql/kernel/qsql/tst_qsql.cpp148
-rw-r--r--tests/auto/sql/kernel/qsqlresult/testsqldriver.h2
-rwxr-xr-xtests/auto/test.pl97
-rw-r--r--tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp16
-rw-r--r--tests/auto/testlib/selftests/datetime/tst_datetime.cpp2
-rw-r--r--tests/auto/testlib/selftests/expected_cmptest.lightxml24
-rw-r--r--tests/auto/testlib/selftests/expected_cmptest.txt20
-rw-r--r--tests/auto/testlib/selftests/expected_cmptest.xml24
-rw-r--r--tests/auto/testlib/selftests/expected_cmptest.xunitxml22
-rw-r--r--tests/auto/testlib/selftests/tst_selftests.cpp7
-rw-r--r--tests/auto/tools/moc/dollars.h70
-rw-r--r--tests/auto/tools/moc/gadgetwithnoenums.h30
-rw-r--r--tests/auto/tools/moc/moc.pro2
-rw-r--r--tests/auto/tools/moc/task189996.h10
-rw-r--r--tests/auto/tools/moc/template-gtgt.h4
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp254
-rw-r--r--tests/auto/tools/qmake/tst_qmake.cpp9
-rw-r--r--tests/auto/widgets/dialogs/dialogs.pro1
-rw-r--r--tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp2
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro4
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp55
-rw-r--r--tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp2
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp68
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp122
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp99
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp67
-rw-r--r--tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp7
-rw-r--r--tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp15
-rw-r--r--tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp7
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp2
-rw-r--r--tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp99
-rw-r--r--tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp27
-rw-r--r--tests/auto/widgets/kernel/kernel.pro1
-rw-r--r--tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp7
-rw-r--r--tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp17
-rw-r--r--tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp6
-rw-r--r--tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp12
-rw-r--r--tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp2
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp17
-rw-r--r--tests/auto/widgets/kernel/qwindowcontainer/.gitignore1
-rw-r--r--tests/auto/widgets/kernel/qwindowcontainer/qwindowcontainer.pro6
-rw-r--r--tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp226
-rw-r--r--tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp4
-rw-r--r--tests/auto/widgets/styles/qstyle/tst_qstyle.cpp11
-rw-r--r--tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp6
-rw-r--r--tests/auto/widgets/util/qscroller/tst_qscroller.cpp15
-rw-r--r--tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp2
-rw-r--r--tests/auto/widgets/util/qundostack/tst_qundostack.cpp92
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp13
-rw-r--r--tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp8
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp10
-rw-r--r--tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp1
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp1
-rw-r--r--tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp36
-rw-r--r--tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp2
-rw-r--r--tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp14
-rw-r--r--tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp4
-rw-r--r--tests/auto/xml/dom/qdom/tst_qdom.cpp18
-rw-r--r--tests/auto/xml/sax/qxml/tst_qxml.cpp6
-rw-r--r--tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp4
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp2
-rw-r--r--tests/auto/xml/sax/sax.pro4
-rw-r--r--tests/baselineserver/shared/lookup3.cpp32
-rw-r--r--tests/benchmarks/README48
-rw-r--r--tests/benchmarks/benchmarks.pro2
-rw-r--r--tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp6
-rw-r--r--tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp14
-rw-r--r--tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h4
-rw-r--r--tests/benchmarks/corelib/io/qfile/main.cpp16
-rw-r--r--tests/benchmarks/corelib/tools/containers-associative/main.cpp16
-rw-r--r--tests/benchmarks/corelib/tools/qmap/main.cpp78
-rw-r--r--tests/benchmarks/corelib/tools/qregexp/main.cpp10
-rw-r--r--tests/benchmarks/corelib/tools/qvector/main.cpp39
-rw-r--r--tests/benchmarks/corelib/tools/qvector/qrawvector.h6
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp14
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp23
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp14
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp1
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h8
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp22
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h8
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp22
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h6
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp6
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp12
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp16
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp74
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp6
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp8
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp18
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h6
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp24
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h6
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h16
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp36
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h6
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp10
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h8
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp10
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp24
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp156
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h31
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp28
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h2
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h4
-rw-r--r--tests/benchmarks/gui/image/blendbench/main.cpp2
-rw-r--r--tests/benchmarks/gui/image/image.pro2
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/black.xpm30
-rw-r--r--tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp14
-rw-r--r--tests/benchmarks/gui/painting/qtbench/benchmarktests.h2
-rw-r--r--tests/benchmarks/gui/text/qtext/main.cpp2
-rw-r--r--tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp26
-rw-r--r--tests/manual/bearerex/bearerex.cpp42
-rw-r--r--tests/manual/bearerex/bearerex.h8
-rw-r--r--tests/manual/bearerex/xqlistwidget.cpp4
-rw-r--r--tests/manual/bearerex/xqlistwidget.h4
-rw-r--r--tests/manual/dialogs/colordialogpanel.cpp261
-rw-r--r--tests/manual/dialogs/colordialogpanel.h86
-rw-r--r--tests/manual/dialogs/dialogs.pro6
-rw-r--r--tests/manual/dialogs/filedialogpanel.cpp105
-rw-r--r--tests/manual/dialogs/filedialogpanel.h13
-rw-r--r--tests/manual/dialogs/fontdialogpanel.cpp208
-rw-r--r--tests/manual/dialogs/fontdialogpanel.h87
-rw-r--r--tests/manual/dialogs/main.cpp7
-rw-r--r--tests/manual/dialogs/wizardpanel.cpp361
-rw-r--r--tests/manual/dialogs/wizardpanel.h69
-rw-r--r--tests/manual/filetest/main.cpp45
-rw-r--r--tests/manual/inputmethodhints/inputmethodhints.h2
-rw-r--r--tests/manual/lance/lance.pro1
-rw-r--r--tests/manual/manual.pro12
-rw-r--r--tests/manual/qcursor/grab_override/mainwindow.h4
-rw-r--r--tests/manual/qlocale/calendar.cpp8
-rw-r--r--tests/manual/qnetworkreply/main.cpp6
-rw-r--r--tests/manual/qpainfo/main.cpp220
-rw-r--r--tests/manual/qpainfo/qpainfo.pro7
-rw-r--r--tests/manual/qtouchevent/touchwidget.cpp2
-rw-r--r--tests/manual/repaint/mainwindow/main.cpp10
-rw-r--r--tests/manual/repaint/scrollarea/main.cpp4
-rw-r--r--tests/manual/repaint/splitter/main.cpp2
-rw-r--r--tests/manual/repaint/tableview/main.cpp5
-rw-r--r--tests/manual/repaint/task141091/main.cpp11
-rw-r--r--tests/manual/repaint/widget/main.cpp8
-rw-r--r--tests/manual/widgets/itemviews/qheaderview/qheaderviewtest1.cpp3
-rw-r--r--tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp41
-rw-r--r--tests/manual/windowflags/controls.cpp4
-rw-r--r--tests/manual/windowgeometry/controllerwidget.cpp12
-rwxr-xr-xtests/manual/xembed-raster/gtk-embedder.py74
-rw-r--r--tests/manual/xembed-raster/main.cpp66
-rw-r--r--tests/manual/xembed-raster/rasterwindow.cpp107
-rw-r--r--tests/manual/xembed-raster/rasterwindow.h69
-rw-r--r--tests/manual/xembed-raster/xembed-raster.pro9
-rwxr-xr-xtests/manual/xembed-widgets/gtk-embedder.py77
-rw-r--r--tests/manual/xembed-widgets/main.cpp69
-rw-r--r--tests/manual/xembed-widgets/window.cpp228
-rw-r--r--tests/manual/xembed-widgets/window.h73
-rw-r--r--tests/manual/xembed-widgets/xembed-widgets.pro9
-rw-r--r--tools/configure/configureapp.cpp81
-rw-r--r--util/corelib/qurl-generateTLDs/main.cpp34
-rw-r--r--util/glgen/README.txt151
-rw-r--r--util/glgen/codegenerator.cpp1099
-rw-r--r--util/glgen/codegenerator.h149
-rw-r--r--util/glgen/glgen.pro35
-rw-r--r--util/glgen/main.cpp61
-rw-r--r--util/glgen/qopenglextensions.cpp.footer792
-rw-r--r--util/glgen/qopenglextensions.cpp.header76
-rw-r--r--util/glgen/qopenglextensions.h.footer1520
-rw-r--r--util/glgen/qopenglextensions.h.header208
-rw-r--r--util/glgen/qopenglversionfunctions.cpp.footer8
-rw-r--r--util/glgen/qopenglversionfunctions.cpp.header220
-rw-r--r--util/glgen/qopenglversionfunctions.h.footer13
-rw-r--r--util/glgen/qopenglversionfunctions.h.header163
-rw-r--r--util/glgen/qopenglversionfunctions__VERSION__.cpp.footer2
-rw-r--r--util/glgen/qopenglversionfunctions__VERSION__.cpp.header55
-rw-r--r--util/glgen/qopenglversionfunctions__VERSION__.h.footer6
-rw-r--r--util/glgen/qopenglversionfunctions__VERSION__.h.header60
-rw-r--r--util/glgen/qopenglversionfunctionsfactory.cpp.footer2
-rw-r--r--util/glgen/qopenglversionfunctionsfactory.cpp.header (renamed from mkspecs/unsupported/linux-android-armeabi-v7a-g++/qplatformdefs.h)16
-rw-r--r--util/glgen/qopenglversionfunctionsfactory_p.h.header73
-rw-r--r--util/glgen/specparser.cpp307
-rw-r--r--util/glgen/specparser.h209
-rw-r--r--util/lexgen/generator.cpp48
-rw-r--r--util/lexgen/generator.h36
-rw-r--r--util/lexgen/main.cpp4
-rw-r--r--util/lexgen/nfa.cpp4
-rw-r--r--util/lexgen/nfa.h4
-rw-r--r--util/lexgen/tests/tst_lexgen.cpp2
-rw-r--r--util/local_database/enumdata.py132
-rwxr-xr-xutil/local_database/qlocalexml2cpp.py1
-rw-r--r--util/unicode/main.cpp241
2616 files changed, 204468 insertions, 32166 deletions
diff --git a/.gitignore b/.gitignore
index ec33ed9737..5f9854a674 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,6 +48,7 @@ pcviewer.cfg
core
.qmake.cache
.qmake.vars
+.device.vars
*.prl
tags
.DS_Store
@@ -306,6 +307,7 @@ tests/auto/corelib/thread/qthreadstorage/crashOnExit
tests/auto/corelib/io/qresourceengine/qresourceengine
tests/auto/corelib/codecs/qtextcodec/echo/echo
tests/auto/corelib/plugin/quuid/testProcessUniqueness/testProcessUniqueness
+tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper
tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver
tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger
tests/auto/dbus/qdbusinterface/qmyserver/qmyserver
diff --git a/bin/syncqt b/bin/syncqt
index 3e7aea96a5..d503e3a87e 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!/usr/bin/env perl
#############################################################################
##
## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
@@ -771,7 +771,6 @@ my $class_lib_map_contents = "";
our @ignore_headers = ();
our @ignore_for_master_contents = ();
our @ignore_for_include_check = ();
-our @ignore_for_qt_begin_header_check = ();
our @ignore_for_qt_begin_namespace_check = ();
our @ignore_for_qt_module_check = ();
our %inject_headers = ();
@@ -1137,7 +1136,6 @@ if($check_includes) {
foreach my $subdir (@subdirs) {
my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0);
foreach my $header (@headers) {
- my $header_skip_qt_begin_header_test = 0;
my $header_skip_qt_begin_namespace_test = 0;
$header = 0 if($header =~ /^ui_.*.h/);
foreach (@ignore_headers) {
@@ -1157,9 +1155,6 @@ if($check_includes) {
foreach (@ignore_for_include_check) {
$public_header = 0 if($header eq $_);
}
- foreach(@ignore_for_qt_begin_header_check) {
- $header_skip_qt_begin_header_test = 1 if ($header eq $_);
- }
foreach(@ignore_for_qt_begin_namespace_check) {
$header_skip_qt_begin_namespace_test = 1 if ($header eq $_);
}
@@ -1169,10 +1164,9 @@ if($check_includes) {
my $iheader = $subdir . "/" . $header;
if($public_header) {
if(open(F, "<$iheader")) {
- my $qt_begin_header_found = 0;
- my $qt_end_header_found = 0;
my $qt_begin_namespace_found = 0;
my $qt_end_namespace_found = 0;
+ my $qt_namespace_suffix = "";
my $line;
my $stop_processing = 0;
while($line = <F>) {
@@ -1197,25 +1191,13 @@ if($check_includes) {
}
}
}
- } elsif ($header_skip_qt_begin_header_test == 0 and $line =~ /^QT_BEGIN_HEADER\s*$/) {
- $qt_begin_header_found = 1;
- } elsif ($header_skip_qt_begin_header_test == 0 and $line =~ /^QT_END_HEADER\s*$/) {
- $qt_end_header_found = 1;
- } elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_BEGIN_NAMESPACE\s*$/) {
+ } elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_BEGIN_NAMESPACE(_[A-Z_]+)?\s*$/) {
+ $qt_namespace_suffix = $1 // "";
$qt_begin_namespace_found = 1;
- } elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_END_NAMESPACE\s*$/) {
+ } elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_END_NAMESPACE$qt_namespace_suffix\s*$/) {
$qt_end_namespace_found = 1;
}
}
- if ($header_skip_qt_begin_header_test == 0 and $stop_processing == 0) {
- if ($qt_begin_header_found == 0) {
- print "$lib: WARNING: $iheader does not include QT_BEGIN_HEADER\n";
- }
-
- if ($qt_begin_header_found && $qt_end_header_found == 0) {
- print "$lib: WARNING: $iheader has QT_BEGIN_HEADER but no QT_END_HEADER\n";
- }
- }
if ($header_skip_qt_begin_namespace_test == 0 and $stop_processing == 0) {
if ($qt_begin_namespace_found == 0) {
@@ -1223,7 +1205,7 @@ if($check_includes) {
}
if ($qt_begin_namespace_found && $qt_end_namespace_found == 0) {
- print "$lib: WARNING: $iheader has QT_BEGIN_NAMESPACE but no QT_END_NAMESPACE\n";
+ print "$lib: WARNING: $iheader has QT_BEGIN_NAMESPACE$qt_namespace_suffix but no QT_END_NAMESPACE$qt_namespace_suffix\n";
}
}
diff --git a/config.tests/arch/arch.pro b/config.tests/arch/arch.pro
index c6801264b4..fda4acc601 100644
--- a/config.tests/arch/arch.pro
+++ b/config.tests/arch/arch.pro
@@ -1,3 +1,4 @@
+TARGET = arch
SOURCES = arch.cpp
CONFIG -= qt dylib release debug_and_release
CONFIG += debug console
diff --git a/config.tests/arch/arch_host.pro b/config.tests/arch/arch_host.pro
new file mode 100644
index 0000000000..f7acef0c5d
--- /dev/null
+++ b/config.tests/arch/arch_host.pro
@@ -0,0 +1,2 @@
+option(host_build)
+include(arch.pro)
diff --git a/config.tests/qpa/linuxfb/linuxfb.cpp b/config.tests/qpa/linuxfb/linuxfb.cpp
index 892c3d9eae..81a257864e 100644
--- a/config.tests/qpa/linuxfb/linuxfb.cpp
+++ b/config.tests/qpa/linuxfb/linuxfb.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include <linux/fb.h>
+#include <sys/kd.h>
#include <sys/ioctl.h>
int main(int, char **)
diff --git a/config.tests/unix/arch.test b/config.tests/unix/arch.test
index dacdcda8bf..e65541cda7 100755
--- a/config.tests/unix/arch.test
+++ b/config.tests/unix/arch.test
@@ -5,26 +5,20 @@ VERBOSE=$2
SRCDIR=$3
OUTDIR=$4
RESULTFILE=$5
-VARPREFIX=$6
+TARGET=$6
shift 6
+if [ "$TARGET" = "host" ]; then
+ VARPREFIX="CFG_HOST"
+ PROSUFFIX="_host"
+else
+ VARPREFIX="CFG"
+ PROSUFFIX=""
+fi
+
LFLAGS="$SYSROOT_FLAG"
CXXFLAGS="$SYSROOT_FLAG"
-while [ "$#" -gt 0 ]; do
- PARAM=$1
- case $PARAM in
- -sdk)
- LFLAGS="$LFLAGS -Wl,-syslibroot,$2"
- CXXFLAGS="$CXXFLAGS -isysroot $2"
- shift
- ;;
- *) ;;
- esac
- shift
-done
-
-
# debuggery
[ "$VERBOSE" = "yes" ] && echo "Determining architecture... ($*)"
@@ -32,7 +26,7 @@ done
test -d "$OUTDIR/config.tests/arch" || mkdir -p "$OUTDIR/config.tests/arch"
cd "$OUTDIR/config.tests/arch"
[ -f Makefile ] && $MAKE distclean >/dev/null 2>&1
-OUTDIR=$OUTDIR "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "QT_BUILD_TREE=$OUTDIR" "LIBS+=$LFLAGS" "QMAKE_CXXFLAGS+=$CXXFLAGS" "$SRCDIR/config.tests/arch/arch.pro" >/dev/null 2>&1 || echo "qmake is broken" >&2
+OUTDIR=$OUTDIR "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "QT_BUILD_TREE=$OUTDIR" "LIBS+=$LFLAGS" "QMAKE_CXXFLAGS+=$CXXFLAGS" "$SRCDIR/config.tests/arch/arch$PROSUFFIX.pro" >/dev/null 2>&1 || echo "qmake is broken" >&2
ARCH=""
@@ -42,6 +36,8 @@ if [ -f ./arch.exe ]; then
binary=./arch.exe
elif [ -f ./arch ]; then
binary=./arch
+elif [ -f ./libarch.so ]; then
+ binary=./libarch.so
else
[ "$VERBOSE" = "yes" ] && echo "Unable to determine architecture!"
exit 2
diff --git a/config.tests/unix/clock-monotonic/clock-monotonic.cpp b/config.tests/unix/clock-monotonic/clock-monotonic.cpp
index 27a653600c..7b7d92bef5 100644
--- a/config.tests/unix/clock-monotonic/clock-monotonic.cpp
+++ b/config.tests/unix/clock-monotonic/clock-monotonic.cpp
@@ -50,7 +50,7 @@ int main(int, char **)
#else
# error "Feature _POSIX_MONOTONIC_CLOCK not available"
// MIPSpro doesn't understand #error, so force a compiler error
- force_compiler_error = true;
+ force_compiler_error = true;
#endif
return 0;
}
diff --git a/config.tests/unix/compile.test b/config.tests/unix/compile.test
index 3f8c5c51a2..6b90044009 100755
--- a/config.tests/unix/compile.test
+++ b/config.tests/unix/compile.test
@@ -32,11 +32,6 @@ while [ "$#" -gt 0 ]; do
MAC_ARCH_LFLAGS="$MAC_ARCH_LFLAGS -arch $2"
shift
;;
- -sdk)
- LFLAGS="$LFLAGS -Wl,-syslibroot,$2"
- CXXFLAGS="$CXXFLAGS -isysroot $2"
- shift
- ;;
-F*|-m*|-x*)
LFLAGS="$LFLAGS $PARAM"
CXXFLAGS="$CXXFLAGS $PARAM"
@@ -72,7 +67,7 @@ test -r Makefile && $MAKE distclean >/dev/null 2>&1
# Make sure output from possible previous tests is gone
rm -f "$EXE" "${EXE}.exe"
-set -- "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG-=debug_and_release" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "QT_BUILD_TREE=$OUTDIR" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
+set -- "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG+=android_app" "CONFIG-=debug_and_release" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "QT_BUILD_TREE=$OUTDIR" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
if [ "$VERBOSE" = "yes" ]; then
OUTDIR=$OUTDIR "$@"
$MAKE
@@ -81,7 +76,7 @@ else
$MAKE >/dev/null 2>&1
fi
-( [ -x "$EXE" ] || [ -x "${EXE}.exe" ] ) && SUCCESS=yes
+( [ -f "$EXE" ] || [ -f "${EXE}.exe" ] ) && SUCCESS=yes
# done
if [ "$SUCCESS" != "yes" ]; then
diff --git a/config.tests/unix/eventfd/eventfd.pro b/config.tests/unix/eventfd/eventfd.pro
new file mode 100644
index 0000000000..c41204f49f
--- /dev/null
+++ b/config.tests/unix/eventfd/eventfd.pro
@@ -0,0 +1,3 @@
+SOURCES = main.cpp
+CONFIG -= qt dylib
+mac:CONFIG -= app_bundle
diff --git a/mkspecs/unsupported/linux-android-armeabi-g++/qplatformdefs.h b/config.tests/unix/eventfd/main.cpp
index 38b5f6e6d2..0523ee0320 100644
--- a/mkspecs/unsupported/linux-android-armeabi-g++/qplatformdefs.h
+++ b/config.tests/unix/eventfd/main.cpp
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2012 Collabora Ltd, author <robin.burchell@collabora.co.uk>
+** Copyright (C) 2012 Intel Corporation
** 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 config.tests of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,4 +39,13 @@
**
****************************************************************************/
-#include "../../common/android/qplatformdefs.h"
+#include <sys/eventfd.h>
+
+int main()
+{
+ eventfd_t value;
+ int fd = eventfd(0, EFD_CLOEXEC);
+ eventfd_read(fd, &value);
+ eventfd_write(fd, value);
+ return 0;
+}
diff --git a/config.tests/unix/getaddrinfo/getaddrinfotest.cpp b/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
index d8dc343f2e..c8c8eb41da 100644
--- a/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
+++ b/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
@@ -59,6 +59,6 @@ int main()
if (getaddrinfo("foo", 0, 0, &res) == 0)
freeaddrinfo(res);
gai_strerror(0);
-
+
return 0;
}
diff --git a/configure b/configure
index dee86c2704..d925e8ca4c 100755
--- a/configure
+++ b/configure
@@ -2,6 +2,7 @@
#############################################################################
##
## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+## Copyright (C) 2013 Intel Corporation.
## Contact: http://www.qt-project.org/legal
##
## This file is the build configuration utility of the Qt Toolkit.
@@ -125,7 +126,7 @@ shellArgumentListToQMakeList()
# Helper function for getQMakeConf. It parses include statements in
# qmake.conf and prints out the expanded file
-getQMakeConf1()
+expandQMakeConf()
{
while read line; do case "$line" in
include*)
@@ -136,7 +137,7 @@ getQMakeConf1()
echo "WARNING: Unable to find file $conf_file" >&2
continue
fi
- getQMakeConf1 "$conf_file"
+ expandQMakeConf "$conf_file"
;;
*load\(device_config\)*)
conf_file="$DEVICE_VARS_FILE"
@@ -144,7 +145,7 @@ getQMakeConf1()
echo "WARNING: Unable to find file $conf_file" >&2
continue
fi
- getQMakeConf1 "$conf_file"
+ expandQMakeConf "$conf_file"
;;
*)
echo "$line"
@@ -152,13 +153,19 @@ getQMakeConf1()
esac; done < "$1"
}
-getQMakeConf2()
+extractQMakeVariables()
{
$AWK '
BEGIN {
values["LITERAL_WHITESPACE"] = " "
values["LITERAL_DOLLAR"] = "$"
}
+/^!?host_build:/ {
+ scopeStart = index($0, ":") + 1
+ condition = substr($0, 0, scopeStart - 2)
+ if (condition != "'"$1"'") { next }
+ $0 = substr($0, scopeStart)
+}
/^[_A-Z0-9.]+[ \t]*\+?=/ {
valStart = index($0, "=") + 1
@@ -183,13 +190,26 @@ BEGIN {
}
ovalue = ovalue values[var]
}
- ovalue = ovalue value
+ value = ovalue value
+
+ ovalue = ""
+ while (match(value, /\$\$system\(("[^"]*"|[^)]*)\)/)) {
+ ovalue = ovalue substr(value, 1, RSTART - 1)
+ cmd = substr(value, RSTART + 9, RLENGTH - 10)
+ gsub(/^"|"$/, "", cmd)
+ value = substr(value, RSTART + RLENGTH)
+ while ((cmd | getline line) > 0) {
+ ovalue = ovalue line
+ }
+ close(cmd)
+ }
+ value = ovalue value
combinedValue = values[variable]
if (append == 1 && length(combinedValue) > 0) {
- combinedValue = combinedValue " " ovalue
+ combinedValue = combinedValue " " value
} else {
- combinedValue = ovalue
+ combinedValue = value
}
values[variable] = combinedValue
}
@@ -201,27 +221,76 @@ END {
'
}
-getQMakeConf3()
+getSingleQMakeVariable()
{
echo "$2" | $AWK "/^($1)=/ { print substr(\$0, index(\$0, \"=\") + 1) }"
}
+macSDKify()
+{
+ # Normally we take care of sysrootifying in sdk.prf, but configure extracts some
+ # values before qmake is even built, so we have to duplicate the logic here.
+
+ sdk=$(getSingleQMakeVariable "QMAKE_MAC_SDK" "$1")
+ if [ -z "$sdk" ]; then echo "QMAKE_MAC_SDK must be set when building on Mac" >&2; exit 1; fi
+ sysroot=$(xcodebuild -sdk $sdk -version Path 2>/dev/null)
+ if [ -z "$sysroot" ]; then echo "Failed to resolve SDK path for '$sdk'" >&2; exit 1; fi
+
+ case "$sdk" in
+ macosx*)
+ version_min_flag="-mmacosx-version-min=$(getSingleQMakeVariable QMAKE_MACOSX_DEPLOYMENT_TARGET "$1")"
+ ;;
+ iphoneos*)
+ version_min_flag="-miphoneos-version-min=$(getSingleQMakeVariable QMAKE_IOS_DEPLOYMENT_TARGET "$1")"
+ ;;
+ iphonesimulator*)
+ version_min_flag="-mios-simulator-version-min=$(getSingleQMakeVariable QMAKE_IOS_DEPLOYMENT_TARGET "$1")"
+ ;;
+ *)
+ ;;
+ esac
+
+ echo "$1" | while read line; do
+ case "$line" in
+ QMAKE_CC=*|QMAKE_CXX=*|QMAKE_FIX_RPATH=*|QMAKE_AR=*|QMAKE_RANLIB=*|QMAKE_LINK=*|QMAKE_LINK_SHLIB=*)
+ # Prefix tool with toolchain path
+ var=$(echo "$line" | cut -d '=' -f 1)
+ val=$(echo "$line" | cut -d '=' -f 2-)
+ sdk_val=$(xcrun -sdk $sdk -find $(echo $val | cut -d ' ' -f 1))
+ val=$(echo $sdk_val $(echo $val | cut -s -d ' ' -f 2-))
+ echo "$var=$val"
+ ;;
+ QMAKE_CFLAGS=*|QMAKE_CXXFLAGS=*|QMAKE_OBJECTIVE_CFLAGS=*)
+ echo "$line -isysroot $sysroot $version_min_flag"
+ ;;
+ QMAKE_LFLAGS=*)
+ echo "$line -Wl,-syslibroot,$sysroot $version_min_flag"
+ ;;
+ *)
+ echo "$line"
+ ;;
+ esac
+ done
+}
+
# relies on $QMAKESPEC being set correctly. parses include statements in
# qmake.conf and prints out the expanded file
getQMakeConf()
{
if [ -z "$specvals" ]; then
- specvals=`getQMakeConf1 "$QMAKESPEC/qmake.conf" | getQMakeConf2`
+ specvals=`expandQMakeConf "$QMAKESPEC/qmake.conf" | extractQMakeVariables "host_build"`
+ if [ "$BUILD_ON_MAC" = "yes" ]; then specvals=$(macSDKify "$specvals"); fi
fi
- getQMakeConf3 "$1" "$specvals"
+ getSingleQMakeVariable "$1" "$specvals"
}
getXQMakeConf()
{
if [ -z "$xspecvals" ]; then
- xspecvals=`getQMakeConf1 "$XQMAKESPEC/qmake.conf" | getQMakeConf2`
+ xspecvals=`expandQMakeConf "$XQMAKESPEC/qmake.conf" | extractQMakeVariables "!host_build"`
+ if [ "$BUILD_ON_MAC" = "yes" ]; then xspecvals=$(macSDKify "$xspecvals"); fi
fi
- getQMakeConf3 "$1" "$xspecvals"
+ getSingleQMakeVariable "$1" "$xspecvals"
}
compilerSupportsFlag()
@@ -369,6 +438,12 @@ if [ -d /System/Library/Frameworks/Carbon.framework ]; then
BUILD_ON_MAC=yes
PLATFORM_MAC=maybe
fi
+BUILD_ON_MSYS=no
+HOST_DIRLIST_SEP=":"
+if [ "$OSTYPE" = "msys" ]; then
+ HOST_DIRLIST_SEP=";"
+ BUILD_ON_MSYS=yes
+fi
#-----------------------------------------------------------------------------
# Qt version detection
@@ -733,7 +808,7 @@ QMakeVar add styles "mac fusion windows"
unset QTDIR
# the minimum version of libdbus-1 that we require:
-MIN_DBUS_1_VERSION=0.93
+MIN_DBUS_1_VERSION=1.2
# initalize internal variables
CFG_CONFIGURE_EXIT_ON_ERROR=yes
@@ -844,10 +919,10 @@ CFG_GETADDRINFO=auto
CFG_IPV6IFNAME=auto
CFG_GETIFADDRS=auto
CFG_INOTIFY=auto
+CFG_EVENTFD=auto
CFG_RPATH=yes
CFG_FRAMEWORK=auto
CFG_MAC_HARFBUZZ=no
-CFG_SDK=
DEFINES=
D_FLAGS=
I_FLAGS=
@@ -856,6 +931,7 @@ RPATH_FLAGS=
W_FLAGS=
QCONFIG_FLAGS=
XPLATFORM= # This seems to be the QMAKESPEC, like "linux-g++"
+XPLATFORM_ANDROID=no
XPLATFORM_MINGW=no # Whether target platform is MinGW (win32-g++*)
XPLATFORM_MAEMO=no
XPLATFORM_QNX=no
@@ -876,6 +952,7 @@ CFG_PCRE=auto
QPA_PLATFORM_GUARD=yes
CFG_CXX11=auto
CFG_DIRECTWRITE=no
+CFG_WERROR=auto
# initalize variables used for installation
QT_INSTALL_PREFIX=
@@ -935,6 +1012,15 @@ CFG_SQL_oci=no
CFG_SQL_db2=no
CFG_SQL_AVAILABLE=
+
+# Android vars
+CFG_DEFAULT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT
+CFG_DEFAULT_ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT
+CFG_DEFAULT_ANDROID_PLATFORM=android-9
+CFG_DEFAULT_ANDROID_TARGET_ARCH=armeabi-v7a
+CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION=4.7
+CFG_DEFAULT_ANDROID_NDK_HOST=$ANDROID_NDK_HOST
+
if [ -d "$relpath/src/plugins/sqldrivers" ]; then
for a in "$relpath/src/plugins/sqldrivers/"*; do
if [ -d "$a" ]; then
@@ -996,7 +1082,7 @@ while [ "$#" -gt 0 ]; do
VAL=no
;;
#Qt style options that pass an argument
- -prefix|-docdir|-headerdir|-plugindir|-importdir|-qmldir|-archdatadir|-datadir|-libdir|-bindir|-libexecdir|-translationdir|-sysconfdir|-examplesdir|-testsdir|-depths|-make|-nomake|-skip|-platform|-xplatform|-device|-device-option|-sdk|-arch|-host-arch|-mysql_config|-sysroot|-hostdatadir|-hostbindir|-qpa|-qconfig)
+ -prefix|-docdir|-headerdir|-plugindir|-importdir|-qmldir|-archdatadir|-datadir|-libdir|-bindir|-libexecdir|-translationdir|-sysconfdir|-examplesdir|-testsdir|-depths|-make|-nomake|-skip|-platform|-xplatform|-device|-device-option|-sdk|-arch|-host-arch|-mysql_config|-sysroot|-hostdatadir|-hostbindir|-qpa|-qconfig|-android-sdk|-android-ndk|-android-ndk-platform|-android-ndk-host|-android-arch|-android-toolchain-version)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
shift
VAL="$1"
@@ -1299,8 +1385,7 @@ while [ "$#" -gt 0 ]; do
;;
sdk)
if [ "$BUILD_ON_MAC" = "yes" ]; then
- CFG_SDK="$VAL"
- DeviceVar set QMAKE_MAC_SDK "$VAL"
+ DeviceVar set !host_build:QMAKE_MAC_SDK "$VAL"
else
UNKNOWN_OPT=yes
fi
@@ -2130,6 +2215,31 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
+ warnings-are-errors|Werror)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_WERROR="$VAL"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
+ android-sdk)
+ CFG_DEFAULT_ANDROID_SDK_ROOT="$VAL"
+ ;;
+ android-ndk)
+ CFG_DEFAULT_ANDROID_NDK_ROOT="$VAL"
+ ;;
+ android-ndk-platform)
+ CFG_DEFAULT_ANDROID_PLATFORM="$VAL"
+ ;;
+ android-ndk-host)
+ CFG_DEFAULT_ANDROID_NDK_HOST="$VAL"
+ ;;
+ android-arch)
+ CFG_DEFAULT_ANDROID_TARGET_ARCH="$VAL"
+ ;;
+ android-toolchain-version)
+ CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION="$VAL"
+ ;;
*)
UNKNOWN_OPT=yes
;;
@@ -2335,20 +2445,25 @@ if [ -z "$PLATFORM" ]; then
PLATFORM_NOTES=
case "$UNAME_SYSTEM:$UNAME_RELEASE" in
Darwin:*)
- OSX_VERSION=`uname -r | cut -d. -f1`
- # Select compiler. Use g++ unless we find a usable Clang version
- PLATFORM=macx-g++
- if [ "$OSX_VERSION" -ge 12 ]; then
- # We're on Mountain Lion or above. Use Clang. Don't advertise gcc.
+ # Select compiler. Use g++ unless we find a usable Clang version. Note that
+ # we are checking the "Apple" clang/LLVM version number, not the actual
+ # clang/LLVM version number that the Apple version was based on. We look
+ # for Apple clang version 3.0 or higher, which was branched off LLVM 3.0
+ # from SVN, and first included in Xcode 4.2. Also note that we do not care
+ # about the OS version, since we're not using the clang version that comes
+ # with the system. We use 'xcrun' to check the clang version that's part of
+ # the Xcode installation.
+ if [ "$(xcrun -sdk macosx clang -v 2>&1 | sed -n 's/.*version \([0-9]\).*/\1/p')" -ge 3 ]; then
PLATFORM=macx-clang
- elif [ "$OSX_VERSION" -eq 11 ]; then
- # We're on Lion. Check if we have a supported Clang version
- if [ "$(clang -v 2>&1 | grep -Po '(?<=version )[\d]')" -ge 3 ]; then
- PLATFORM=macx-clang
- PLATFORM_NOTES="\n - Also available for Mac OS X: macx-g++\n"
- fi
- fi
- ;;
+
+ # Advertise g++ as an alternative on Lion and below
+ if [ "$(uname -r | cut -d. -f1)" -le 11 ]; then
+ PLATFORM_NOTES="\n - Also available for Mac OS X: macx-g++\n"
+ fi
+ else
+ PLATFORM=macx-g++
+ fi
+ ;;
AIX:*)
#PLATFORM=aix-g++
#PLATFORM=aix-g++-64
@@ -2502,8 +2617,89 @@ fi
[ -z "$XPLATFORM" ] && XPLATFORM="$PLATFORM"
case `basename "$XPLATFORM"` in win32-g++*) XPLATFORM_MINGW=yes;; esac
-case "$XPLATFORM" in *-maemo*) XPLATFORM_MAEMO=yes;; esac
-case "$XPLATFORM" in *qnx-*|*blackberry-*) XPLATFORM_QNX=yes;; esac
+case "$XPLATFORM" in
+ *-maemo*)
+ XPLATFORM_MAEMO=yes
+ ;;
+ *qnx-*|*blackberry-*)
+ XPLATFORM_QNX=yes
+ ;;
+ *ios*)
+ XPLATFORM_IOS=yes
+ ;;
+ # XPLATFORM_ANDROID should not be set for unsupported/android-g++
+ *unsupported*)
+ ;;
+ *android-g++*)
+ XPLATFORM_ANDROID=yes
+ ;;
+esac
+
+if [ "$XPLATFORM_ANDROID" = "yes" ]; then
+ if [ -z "$CFG_DEFAULT_ANDROID_NDK_HOST" ]; then
+ case $PLATFORM in
+ linux-*-64)
+ if [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/linux-x86_64" ]; then
+ CFG_DEFAULT_ANDROID_NDK_HOST=linux-x86_64
+ else
+ CFG_DEFAULT_ANDROID_NDK_HOST=linux-x86
+ fi
+ ;;
+ linux-*)
+ CFG_DEFAULT_ANDROID_NDK_HOST=linux-x86
+ ;;
+ macx-*)
+ CFG_DEFAULT_ANDROID_NDK_HOST=darwin-x86
+ if [ ! -z "$NATIVE_64_ARCH" ] && [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/darwin-x86_64" ]; then
+ CFG_DEFAULT_ANDROID_NDK_HOST=darwin-x86_64
+ fi
+ ;;
+ win32-*)
+ CFG_DEFAULT_ANDROID_NDK_HOST=windows
+ if [ ! -z "$NATIVE_64_ARCH" ] && [ -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/windows-x86_64" ]; then
+ CFG_DEFAULT_ANDROID_NDK_HOST=windows-x86_64
+ fi
+ ;;
+ esac
+ fi
+
+ if [ "$OPT_HELP" != "yes" ]; then
+ if [ -z "$CFG_DEFAULT_ANDROID_NDK_ROOT" ]; then
+ echo
+ echo "Can not find Android NDK. Please use -android-ndk option to specify one"
+ exit 1
+ fi
+ if [ -z "$CFG_DEFAULT_ANDROID_SDK_ROOT" ]; then
+ echo
+ echo "Can not find Android SDK. Please use -android-sdk option to specify one"
+ exit 1
+ fi
+ if [ -z "CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION" ] || [ ! -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt" ]; then
+ echo
+ echo "Can not detect Android NDK toolchain. Please use -android-toolchain-version to specify"
+ exit 1
+ fi
+ if [ -z "$CFG_DEFAULT_ANDROID_NDK_HOST" ] || [ ! -d "$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/$CFG_DEFAULT_ANDROID_NDK_HOST" ]; then
+ echo
+ echo "Can not detect the android host. Please use -android-ndk-host option to specify one"
+ exit 1
+ fi
+
+ QT_QPA_DEFAULT_PLATFORM="android"
+ CFG_LARGEFILE="no"
+
+ # FIXME: Qt Creator requires this to be in the lib/ directory of Qt. This line can be removed
+ # once it's fixed to get the file directly from the NDK.
+ cp -f $CFG_DEFAULT_ANDROID_NDK_ROOT/sources/cxx-stl/gnu-libstdc++/$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/libs/$CFG_DEFAULT_ANDROID_TARGET_ARCH/libgnustl_shared.so $outpath/lib
+
+ DeviceVar set DEFAULT_ANDROID_SDK_ROOT "$CFG_DEFAULT_ANDROID_SDK_ROOT"
+ DeviceVar set DEFAULT_ANDROID_NDK_ROOT "$CFG_DEFAULT_ANDROID_NDK_ROOT"
+ DeviceVar set DEFAULT_ANDROID_PLATFORM "$CFG_DEFAULT_ANDROID_PLATFORM"
+ DeviceVar set DEFAULT_ANDROID_NDK_HOST "$CFG_DEFAULT_ANDROID_NDK_HOST"
+ DeviceVar set DEFAULT_ANDROID_TARGET_ARCH "$CFG_DEFAULT_ANDROID_TARGET_ARCH"
+ DeviceVar set DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION "$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION"
+ fi
+fi
if [ -d "$PLATFORM" ]; then
QMAKESPEC="$PLATFORM"
@@ -2612,25 +2808,9 @@ if [ "$CFG_FORCEDEBUGINFO" = "yes" ]; then
QMAKE_CONFIG="$QMAKE_CONFIG force_debug_info"
fi
-# pass on $CFG_SDK to the arch/configure tests.
-if [ -n "$CFG_SDK" ]; then
- MAC_SDK_FLAG="-sdk $CFG_SDK"
-else
- MAC_SDK_FLAG=
-fi
-
-# find the default framework value
-if [ "$BUILD_ON_MAC" = "yes" ]; then
- if [ "$CFG_FRAMEWORK" = "auto" ]; then
- CFG_FRAMEWORK="$CFG_SHARED"
- elif [ "$CFG_FRAMEWORK" = "yes" ] && [ "$CFG_SHARED" = "no" ]; then
- echo
- echo "WARNING: Using static linking will disable the use of Mac frameworks."
- echo
- CFG_FRAMEWORK="no"
- fi
-else
- CFG_FRAMEWORK=no
+# iOS builds should be static to be able to submit to the App Store
+if [ "$XPLATFORM_IOS" = "yes" ]; then
+ CFG_SHARED="no"
fi
# disable GTK style support auto-detection on Mac
@@ -2641,6 +2821,32 @@ fi
QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX`
TEST_COMPILER=$QMAKE_CONF_COMPILER
+
+if [ "$OPT_HELP" != "yes" ] && [ "$XPLATFORM_ANDROID" = "yes" ] ; then
+ ANDROID_NDK_TOOLS_PREFIX=
+ ANDROID_PLATFORM_ARCH=
+ case $CFG_DEFAULT_ANDROID_TARGET_ARCH in
+ armeabi*)
+ ANDROID_NDK_TOOLS_PREFIX=arm-linux-androideabi
+ ANDROID_PLATFORM_ARCH=arch-arm
+ ;;
+ x86)
+ ANDROID_NDK_TOOLS_PREFIX=x86
+ ANDROID_PLATFORM_ARCH=arch-x86
+ ;;
+ mips)
+ ANDROID_NDK_TOOLS_PREFIX=mipsel-linux-android
+ ANDROID_PLATFORM_ARCH=arch-mips
+ ;;
+ *)
+ echo "ERROR: Unknown android arch $CFG_DEFAULT_ANDROID_TARGET_ARCH"
+ exit 1
+ ;;
+ esac
+ QMAKE_CONF_COMPILER=$CFG_DEFAULT_ANDROID_NDK_ROOT/toolchains/$ANDROID_NDK_TOOLS_PREFIX-$CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION/prebuilt/$CFG_DEFAULT_ANDROID_NDK_HOST/bin/$ANDROID_NDK_TOOLS_PREFIX-g++
+ TEST_COMPILER="$QMAKE_CONF_COMPILER --sysroot=$CFG_DEFAULT_ANDROID_NDK_ROOT/platforms/$CFG_DEFAULT_ANDROID_PLATFORM/$ANDROID_PLATFORM_ARCH/"
+fi
+
if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
if [ -z "$TEST_COMPILER" ]; then
echo "ERROR: Cannot set the compiler for the configuration tests"
@@ -2751,7 +2957,7 @@ fi
# auto-detect default include and library search paths
gccout=`$TEST_COMPILER $SYSROOT_FLAG $TEST_COMPILER_CXXFLAGS -xc++ -E -v - < /dev/null 2>&1 > /dev/null`
libdirs=`echo "$gccout" | sed -n -e 's/^LIBRARY_PATH=\(.*\)/\1/p'`
-DEFAULT_LIBDIRS=`IFS=:; for i in $libdirs; do test -d "$i" && cd "$i" && pwd; done | sort -u`
+DEFAULT_LIBDIRS=`IFS=${HOST_DIRLIST_SEP}; for i in $libdirs; do test -d "$i" && cd "$i" && pwd; done | sort -u`
DEFAULT_INCDIRS=`echo "$gccout" | awk '
/^End of search/ { yup=0 }
/ \(framework directory\)$/ { next }
@@ -3308,6 +3514,10 @@ Additional options:
* -no-system-proxies .. Do not use system network proxies by default.
-system-proxies ..... Use system network proxies by default.
+ -no-warnings-are-errors Make warnings be treated normally
+ -warnings-are-errors Make warnings be treated as errors
+ (enabled if -developer-build is active)
+
$GBN -no-glib ........... Do not compile Glib support.
$GBY -glib .............. Compile Glib support.
EOF
@@ -3344,8 +3554,8 @@ Qt/Mac only:
link tools against those frameworks.
-no-framework ...... Do not build Qt as a series of frameworks.
- -sdk <sdk> ......... Build Qt using Apple provided SDK <sdk>. This option requires gcc 4.
- To use a different SDK with gcc 3.3, set the SDKROOT environment variable.
+ -sdk <sdk> ......... Build Qt using Apple provided SDK <sdk>. The argument should be
+ one of the available SDKs as listed by 'xcodebuild -showsdks'.
-harfbuzz .......... Use HarfBuzz to do text layout instead of Core Text when possible.
* -no-harfbuzz ....... Disable HarfBuzz on Mac. It can still be enabled by setting
@@ -3354,6 +3564,31 @@ Qt/Mac only:
EOF
fi
+if [ "$XPLATFORM_ANDROID" = "yes" ]; then
+ cat << EOF
+
+Android options:
+ -android-sdk path .............. The Android SDK root path.
+ (default $CFG_DEFAULT_ANDROID_SDK_ROOT)
+
+ -android-ndk path .............. The Android NDK root path.
+ (default $CFG_DEFAULT_ANDROID_NDK_ROOT)
+
+ -android-ndk-platform .......... Sets the android platform
+ (default $CFG_DEFAULT_ANDROID_PLATFORM)
+
+ -android-ndk-host .............. Sets the android NDK host (linux-x86, linux-x86_64, etc.)
+ (default $CFG_DEFAULT_ANDROID_NDK_HOST)
+
+ -android-arch .................. Sets the android architecture (armeabi, armeabi-v7a, x86, mips)
+ (default $CFG_DEFAULT_ANDROID_TARGET_ARCH)
+
+ -android-toolchain-version ..... Sets the android toolchain version
+ (default $CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION)
+EOF
+
+fi
+
[ "x$ERROR" = "xyes" ] && exit 1
exit 0
fi # Help
@@ -3662,10 +3897,6 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
setBootstrapVariable QMAKE_CXXFLAGS
setBootstrapVariable QMAKE_LFLAGS
- if [ $QT_EDITION = "QT_EDITION_OPENSOURCE" ]; then
- EXTRA_CFLAGS="$EXTRA_CFLAGS -DQMAKE_OPENSOURCE_EDITION"
- EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -DQMAKE_OPENSOURCE_EDITION"
- fi
if [ "$CFG_RELEASE_QMAKE" = "yes" ]; then
setBootstrapVariable QMAKE_CFLAGS_RELEASE
setBootstrapVariable QMAKE_CXXFLAGS_RELEASE
@@ -3684,22 +3915,48 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
EXTRA_LFLAGS="\$(QMAKE_LFLAGS_RPATH)\"$rpath\" $EXTRA_LFLAGS"
done
fi
+ if [ "$BUILD_ON_MSYS" = "yes" ]; then
+ EXTRA_CFLAGS="-DUNICODE"
+ EXTRA_CXXFLAGS="-DUNICODE"
+ EXTRA_OBJS="qfilesystemengine_win.o \
+ qfilesystemiterator_win.o \
+ qfsfileengine_win.o \
+ qlocale_win.o \
+ qsettings_win.o \
+ qsystemlibrary.o \
+ registry.o"
+ EXTRA_SRCS="\"\$(SOURCE_PATH)/src/corelib/corelib/io/qfilesystemengine_win.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp\" \
+ \"\$(SOURCE_PATH)/tools/shared/windows/registry.cpp\""
+ EXTRA_LFLAGS="-static -s -lole32 -luuid -ladvapi32 -lkernel32"
+ EXEEXT=".exe"
+ else
+ EXTRA_OBJS="qfilesystemengine_unix.o \
+ qfilesystemiterator_unix.o \
+ qfsfileengine_unix.o \
+ qlocale_unix.o"
+ EXTRA_SRCS="\"\$(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/tools/qlocal_unix.cpp\""
+ EXEEXT=
+ fi
if [ "$BUILD_ON_MAC" = "yes" ]; then
- echo "export MACOSX_DEPLOYMENT_TARGET = 10.6" >> "$mkfile"
echo "CARBON_LFLAGS =-framework ApplicationServices" >>"$mkfile"
echo "CARBON_CFLAGS =-fconstant-cfstrings" >>"$mkfile"
EXTRA_LFLAGS="$EXTRA_LFLAGS \$(CARBON_LFLAGS)"
EXTRA_CFLAGS="$EXTRA_CFLAGS \$(CARBON_CFLAGS)"
EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS \$(CARBON_CFLAGS)"
- EXTRA_OBJS="qsettings_mac.o qcore_mac.o"
- EXTRA_SRCS="\"$relpath/src/corelib/io/qsettings_mac.cpp\" \"$relpath/src/corelib/kernel/qcore_mac.cpp\""
- if [ '!' -z "$CFG_SDK" ]; then
- echo "SDK_LFLAGS =-Wl,-syslibroot,$CFG_SDK" >>"$mkfile"
- echo "SDK_CFLAGS =-isysroot $CFG_SDK" >>"$mkfile"
- EXTRA_CFLAGS="$EXTRA_CFLAGS \$(SDK_CFLAGS)"
- EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS \$(SDK_CFLAGS)"
- EXTRA_LFLAGS="$EXTRA_LFLAGS \$(SDK_LFLAGS)"
- fi
+ EXTRA_OBJS="$EXTRA_OBJS \
+ qsettings_mac.o \
+ qcore_mac.o"
+ EXTRA_SRCS="$EXTRA_SRCS \
+ \"\$(SOURCE_PATH)/src/corelib/io/qsettings_mac.cpp\" \
+ \"\$(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp\""
fi
if [ '!' -z "$D_FLAGS" ]; then
EXTRA_CFLAGS="$EXTRA_CFLAGS $D_FLAGS"
@@ -3712,13 +3969,25 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
adjrelpath=`echo "$relpath" | sed 's/ /\\\\\\\\ /g'`
adjoutpath=`echo "$outpath" | sed 's/ /\\\\\\\\ /g'`
adjqmakespec=`echo "$QMAKESPEC" | sed 's/ /\\\\\\\\ /g'`
- sed -e "s,@SOURCE_PATH@,$adjrelpath,g" -e "s,@BUILD_PATH@,$adjoutpath,g" \
- -e "s,@QMAKE_CFLAGS@,$EXTRA_CFLAGS,g" -e "s,@QMAKE_LFLAGS@,$EXTRA_LFLAGS,g" \
- -e "s,@QMAKE_CXXFLAGS@,$EXTRA_CXXFLAGS,g" \
- -e "s,@QT_INSTALL_BINS@,\$(INSTALL_ROOT)$QMAKE_BIN_DIR,g" \
- -e "s,@QT_INSTALL_DATA@,\$(INSTALL_ROOT)$QMAKE_DATA_DIR,g" \
- -e "s,@QMAKE_QTOBJS@,$EXTRA_OBJS,g" -e "s,@QMAKE_QTSRCS@,$EXTRA_SRCS,g" \
- -e "s,@QMAKESPEC@,$adjqmakespec,g" -e "s,@QT_VERSION@,$QT_VERSION,g" "$in_mkfile" >>"$mkfile"
+
+ echo "BUILD_PATH = $adjoutpath" >> "$mkfile"
+ echo "SOURCE_PATH = $adjrelpath" >> "$mkfile"
+ echo "QMAKESPEC = $adjqmakespec" >> "$mkfile"
+ echo "QT_VERSION = $QT_VERSION" >> "$mkfile"
+ echo "EXTRA_CFLAGS = $EXTRA_CFLAGS" >> "$mkfile"
+ echo "EXTRA_CXXFLAGS = $EXTRA_CXXFLAGS" >> "$mkfile"
+ echo "QTOBJS = $EXTRA_OBJS" >> "$mkfile"
+ echo "QTSRCS = $EXTRA_SRCS" >> "$mkfile"
+ echo "LFLAGS = $EXTRA_LFLAGS" >> "$mkfile"
+ echo "QT_INSTALL_BINS = \$(INSTALL_ROOT)$QMAKE_BIN_DIR" >> "$mkfile"
+ echo "QT_INSTALL_DATA = \$(INSTALL_ROOT)$QMAKE_DATA_DIR" >> "$mkfile"
+ echo "EXEEXT = $EXEEXT" >> "$mkfile"
+ echo "RM_F = rm -f" >> "$mkfile"
+ echo "RM_RF = rm -rf" >> "$mkfile"
+ if [ $QT_EDITION = "QT_EDITION_OPENSOURCE" ]; then
+ echo "EXTRA_CPPFLAGS = -DQMAKE_OPENSOURCE_EDITION" >> "$mkfile"
+ fi
+ cat "$in_mkfile" >> "$mkfile"
if "$WHICH" makedepend >/dev/null 2>&1 && grep 'depend:' "$mkfile" >/dev/null 2>&1; then
(cd "$outpath/qmake" && "$MAKE" -f "$mkfile" depend) >/dev/null 2>&1
@@ -3753,6 +4022,20 @@ else
fi
#-------------------------------------------------------------------------------
+# Verify makespec
+#-------------------------------------------------------------------------------
+QMAKE_OUTPUT=`$outpath/bin/qmake -E -nocache -spec "$XQMAKESPEC" "QT=" /dev/null 2>&1 >/dev/null`
+if [ $? != "0" ]; then
+ echo "Failed to process makespec for platform '$XPLATFORM'"
+ if [ "$OPT_VERBOSE" = "yes" ]; then
+ echo "$QMAKE_OUTPUT"
+ else
+ echo "Turn on verbose messaging (-v) to see the final report."
+ fi
+ exit 101
+fi
+
+#-------------------------------------------------------------------------------
# Detect pkg-config
#-------------------------------------------------------------------------------
if [ -z "$PKG_CONFIG" ]; then
@@ -3829,7 +4112,7 @@ compileTest()
path=config.tests/$1
name=$2
shift 2
- "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "$path" "$name" $I_FLAGS $D_FLAGS $L_FLAGS $MAC_SDK_FLAG "$@"
+ "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "$path" "$name" $I_FLAGS $D_FLAGS $L_FLAGS "$@"
}
#-------------------------------------------------------------------------------
@@ -3838,7 +4121,7 @@ compileTest()
# Use config.tests/arch/arch.pro to have the compiler tell us what the target architecture is
OUTFILE=$outpath/arch.result
-"$unixtests/arch.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "CFG" $MAC_SDK_FLAG
+"$unixtests/arch.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "target"
if [ $? -eq 0 ]; then
eval `cat "$OUTFILE"`
else
@@ -3851,7 +4134,7 @@ rm -f "$OUTFILE" 2>/dev/null
if [ "$QMAKESPEC" != "$XQMAKESPEC" ]; then
# Do the same test again, using the host compiler
- SYSROOT_FLAG= "$unixtests/arch.test" "$QMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "CFG_HOST" $MAC_SDK_FLAG
+ SYSROOT_FLAG= "$unixtests/arch.test" "$QMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "host"
if [ $? -eq 0 ]; then
eval `cat "$OUTFILE"`
else
@@ -3951,7 +4234,7 @@ if [ "${CFG_AVX}" = "auto" ]; then
*g++*|*-clang*)
# Some clang versions produce internal compiler errors compiling Qt AVX code
case `$TEST_COMPILER --version` in
- Apple\ clang\ version\ 2*|Apple\ clang\ version\ 3.0*)
+ Apple\ clang\ version\ [23]*)
CFG_AVX=no
if [ "$OPT_VERBOSE" = "yes" ]; then
echo 'AVX support disabled for blacklisted clang compiler'
@@ -3995,7 +4278,8 @@ fi
# detect neon support
if [ "$CFG_ARCH" = "arm" ] && [ "${CFG_NEON}" = "auto" ]; then
- if compileTest unix/neon "neon"; then
+ # The iOS toolchain has trouble building the pixman NEON draw-helpers
+ if [ "$XPLATFORM_IOS" != "yes" ] && compileTest unix/neon "neon"; then
CFG_NEON=yes
else
CFG_NEON=no
@@ -4027,6 +4311,7 @@ elif [ "$CFG_ARCH" != "mips" ]; then
fi
[ "$XPLATFORM_MINGW" = "yes" ] && QMakeVar add styles "windowsxp windowsvista"
+[ "$XPLATFORM_ANDROID" = "yes" ] && QMakeVar add styles "android"
# detect zlib
if [ "$CFG_ZLIB" = "no" ]; then
@@ -4491,14 +4776,17 @@ fi
# auto-detect GTK style support
if [ "$CFG_GLIB" = "yes" -a "$CFG_QGTKSTYLE" != "no" ]; then
if [ -n "$PKG_CONFIG" ]; then
- QT_CFLAGS_QGTKSTYLE=`$PKG_CONFIG --cflags gtk+-2.0 ">=" 2.18 atk 2>/dev/null`
- QT_LIBS_QGTKSTYLE=`$PKG_CONFIG --libs gobject-2.0 2>/dev/null`
+ QT_CFLAGS_QGTK2=`$PKG_CONFIG --cflags gtk+-2.0 ">=" 2.18 atk 2>/dev/null`
+ QT_LIBS_QGTK2=`$PKG_CONFIG --libs gtk+-2.0 2>/dev/null`
+ QT_LIBS_QGOBJECT=`$PKG_CONFIG --libs gobject-2.0 2>/dev/null`
fi
- if [ -n "$QT_CFLAGS_QGTKSTYLE" ] ; then
+ if [ -n "$QT_CFLAGS_QGTK2" ] ; then
CFG_QGTKSTYLE=yes
- QT_CONFIG="$QT_CONFIG gtkstyle"
- QMakeVar set QT_CFLAGS_QGTKSTYLE "$QT_CFLAGS_QGTKSTYLE"
- QMakeVar set QT_LIBS_QGTKSTYLE "$QT_LIBS_QGTKSTYLE"
+ QT_CONFIG="$QT_CONFIG gtk2 gtkstyle"
+ QMakeVar set QT_CFLAGS_QGTKSTYLE "$QT_CFLAGS_QGTK2"
+ QMakeVar set QT_LIBS_QGTKSTYLE "$QT_LIBS_QGOBJECT"
+ QMakeVar set QT_CFLAGS_QGTK2 "$QT_CFLAGS_QGTK2"
+ QMakeVar set QT_LIBS_QGTK2 "$QT_LIBS_QGTK2"
else
if [ "$CFG_QGTKSTYLE" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
echo "Gtk theme support cannot be enabled due to functionality tests!"
@@ -4920,13 +5208,20 @@ if [ "$CFG_KMS" != "no" ]; then
fi
# Detect libxkbcommon
-if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists xkbcommon 2>/dev/null; then
+if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists "xkbcommon >= 0.2.0" 2>/dev/null; then
QMAKE_CFLAGS_XKBCOMMON="`$PKG_CONFIG --cflags xkbcommon 2>/dev/null`"
QMAKE_LIBS_XKBCOMMON="`$PKG_CONFIG --libs xkbcommon 2>/dev/null`"
- QMAKE_CFLAGS_XCB="$QMAKE_CFLAGS_XCB $QMAKE_CFLAGS_XKBCOMMON"
- QMAKE_LIBS_XCB="$QMAKE_LIBS_XCB $QMAKE_LIBS_XKBCOMMON"
+ QT_CONFIG="$QT_CONFIG xkbcommon"
else
- QMAKE_DEFINES_XCB=QT_NO_XCB_XKB
+ echo "WARNING: Qt requires the libxkbcommon version 0.2.0 (or higher)."
+ echo "Not satisfying this requirement will disable the compose key functionality,"
+ echo "which includes text input with dead keys."
+ QMakeVar add DEFINES QT_NO_XKBCOMMON
+fi
+
+if [ -n "$QMAKE_CFLAGS_XKBCOMMON" ] || [ -n "$QMAKE_LIBS_XKBCOMMON" ]; then
+ QMakeVar set QMAKE_CFLAGS_XKBCOMMON "$QMAKE_CFLAGS_XKBCOMMON"
+ QMakeVar set QMAKE_LIBS_XKBCOMMON "$QMAKE_LIBS_XKBCOMMON"
fi
# EGL Support
@@ -5011,8 +5306,8 @@ fi
if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then
QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB"
QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB"
- QMakeVar set QMAKE_DEFINES_XCB "$QMAKE_DEFINES_XCB"
fi
+
if [ "$CFG_DIRECTFB" = "yes" ]; then
QT_CONFIG="$QT_CONFIG directfb"
QMakeVar set QMAKE_CFLAGS_DIRECTFB "$QMAKE_CFLAGS_DIRECTFB"
@@ -5033,7 +5328,7 @@ if [ "$BUILD_ON_MAC" = "yes" ]; then
fi
fi
-if [ "$BUILD_ON_MAC" = "no" ] && [ "$XPLATFORM_MINGW" = "no" ] && [ "$XPLATFORM_QNX" = "no" ]; then
+if [ "$BUILD_ON_MAC" = "no" ] && [ "$XPLATFORM_MINGW" = "no" ] && [ "$XPLATFORM_QNX" = "no" ] && [ "$XPLATFORM_ANDROID" = "no" ]; then
if [ "$CFG_XCB" = "no" ] && [ "$CFG_EGLFS" = "no" ] && [ "$CFG_DIRECTFB" = "no" ] && [ "$CFG_LINUXFB" = "no" ] && [ "$CFG_KMS" = "no" ]; then
if [ "$QPA_PLATFORM_GUARD" = "yes" ] &&
( [ "$ORIG_CFG_XCB" = "auto" ] || [ "$ORIG_CFG_EGLFS" = "auto" ] || [ "$ORIG_CFG_DIRECTFB" = "auto" ] || [ "$ORIG_CFG_LINUXFB" = "auto" ] || [ "$ORIG_CFG_KMS" = "auto" ] ); then
@@ -5129,6 +5424,23 @@ if [ "$CFG_INOTIFY" != "no" ]; then
fi
fi
+# find if the platform provides eventfd
+if [ "$CFG_EVENTFD" != "no" ]; then
+ if compileTest unix/eventfd "eventfd"; then
+ CFG_EVENTFD=yes
+ else
+ if [ "$CFG_EVENTFD" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "eventfd support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ echo " If you believe this message is in error you may use the continue"
+ echo " switch (-continue) to $0 to continue."
+ exit 101
+ else
+ CFG_EVENTFD=no
+ fi
+ fi
+fi
+
# find if the platform provides if_nametoindex (ipv6 interface name support)
if [ "$CFG_IPV6IFNAME" != "no" ]; then
if compileTest unix/ipv6ifname "IPv6 interface name"; then
@@ -5170,7 +5482,7 @@ if [ "$CFG_OPENSSL" != "no" ]; then
CFG_OPENSSL=yes
fi
else
- if ( [ "$CFG_OPENSSL" = "yes" ] || [ "$CFG_OPENSSL" = "linked" ] ) && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ if ( [ "$CFG_OPENSSL" = "yes" ] || [ "$CFG_OPENSSL" = "linked" ] ) && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ] && [ "$XPLATFORM_ANDROID" = "no" ]; then
echo "OpenSSL support cannot be enabled due to functionality tests!"
echo " Turn on verbose messaging (-v) to $0 to see the final report."
echo " If you believe this message is in error you may use the continue"
@@ -5418,6 +5730,9 @@ fi
if [ "$CFG_INOTIFY" = "yes" ]; then
QT_CONFIG="$QT_CONFIG inotify"
fi
+if [ "$CFG_EVENTFD" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG eventfd"
+fi
if [ "$CFG_LIBJPEG" = "no" ]; then
CFG_JPEG="no"
elif [ "$CFG_LIBJPEG" = "system" ]; then
@@ -5739,6 +6054,19 @@ if [ "$CFG_QML_DEBUG" = "no" ]; then
fi
case "$QMAKE_CONF_COMPILER" in
+*clang++*)
+ # Clang
+ COMPILER_VERSION=`${QMAKE_CONF_COMPILER} -v 2>&1 | sed -n '
+/^Apple clang version /{s///; s/^\([0-9]*\)\.\([0-9]*\).*$/QT_APPLE_CLANG_MAJOR_VERSION=\1; QT_APPLE_CLANG_MINOR_VERSION=\2/;p;q;}
+/^clang version /{s///; s/^\([0-9]*\)\.\([0-9]*\).*$/QT_CLANG_MAJOR_VERSION=\1; QT_CLANG_MINOR_VERSION=\2/;p;q;}'`
+ eval "$COMPILER_VERSION"
+ ;;
+*icpc)
+ # Intel CC
+ COMPILER_VERSION=`${QMAKE_CONF_COMPILER} -v 2>&1 | sed -n '
+s/icpc version \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\) .*$/QT_ICC_MAJOR_VERSION=\1; QT_ICC_MINOR_VERSION=\2; QT_ICC_PATCH_VERSION=\3/p'`
+ eval "$COMPILER_VERSION"
+ ;;
*g++*)
# GNU C++
COMPILER_VERSION=`${QMAKE_CONF_COMPILER} -dumpversion 2>/dev/null`
@@ -5894,6 +6222,7 @@ QMakeVar set sql-plugins "$SQL_PLUGINS"
[ "$CFG_IPV6IFNAME" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IPV6IFNAME"
[ "$CFG_GETIFADDRS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_GETIFADDRS"
[ "$CFG_INOTIFY" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_INOTIFY"
+[ "$CFG_EVENTFD" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EVENTFD"
[ "$CFG_NIS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_NIS"
[ "$CFG_OPENSSL" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_OPENSSL QT_NO_SSL"
[ "$CFG_OPENSSL" = "linked" ]&& QCONFIG_FLAGS="$QCONFIG_FLAGS QT_LINKED_OPENSSL"
@@ -6023,6 +6352,11 @@ else
fi
if [ "$CFG_DEV" = "yes" ]; then
QT_CONFIG="$QT_CONFIG private_tests"
+ if [ "$CFG_WERROR" != "no" ]; then
+ QMAKE_CONFIG="$QMAKE_CONFIG warnings_are_errors"
+ fi
+elif [ "$CFG_WERROR" = "yes" ]; then
+ QMAKE_CONFIG="$QMAKE_CONFIG warnings_are_errors"
fi
cat >>"$QTCONFIG.tmp" <<EOF
@@ -6078,6 +6412,19 @@ if [ -n "$QT_GCC_MAJOR_VERSION" ]; then
echo "QT_GCC_MINOR_VERSION = $QT_GCC_MINOR_VERSION" >> "$QTCONFIG.tmp"
echo "QT_GCC_PATCH_VERSION = $QT_GCC_PATCH_VERSION" >> "$QTCONFIG.tmp"
fi
+if [ -n "$QT_ICC_MAJOR_VERSION" ]; then
+ echo "QT_ICC_MAJOR_VERSION = $QT_ICC_MAJOR_VERSION" >> "$QTCONFIG.tmp"
+ echo "QT_ICC_MINOR_VERSION = $QT_ICC_MINOR_VERSION" >> "$QTCONFIG.tmp"
+ echo "QT_ICC_PATCH_VERSION = $QT_ICC_PATCH_VERSION" >> "$QTCONFIG.tmp"
+fi
+if [ -n "$QT_CLANG_MAJOR_VERSION" ]; then
+ echo "QT_CLANG_MAJOR_VERSION = $QT_CLANG_MAJOR_VERSION" >> "$QTCONFIG.tmp"
+ echo "QT_CLANG_MINOR_VERSION = $QT_CLANG_MINOR_VERSION" >> "$QTCONFIG.tmp"
+fi
+if [ -n "$QT_APPLE_CLANG_MAJOR_VERSION" ]; then
+ echo "QT_APPLE_CLANG_MAJOR_VERSION = $QT_APPLE_CLANG_MAJOR_VERSION" >> "$QTCONFIG.tmp"
+ echo "QT_APPLE_CLANG_MINOR_VERSION = $QT_APPLE_CLANG_MINOR_VERSION" >> "$QTCONFIG.tmp"
+fi
if [ -n "$QMAKE_INCDIR_OPENGL_ES2" ]; then
echo "#Qt opengl include path" >> "$QTCONFIG.tmp"
@@ -6300,7 +6647,7 @@ echo "Xi support ............. $CFG_XINPUT"
echo "Xi2 support ............ $CFG_XINPUT2"
echo "MIT-SHM support ........ $CFG_MITSHM"
echo "FontConfig support ..... $CFG_FONTCONFIG"
-echo "XKB Support ............ $CFG_XKB"
+echo "XKB support ............ $CFG_XKB"
echo "GTK theme support ...... $CFG_QGTKSTYLE"
if [ "$XPLATFORM_MINGW" = "yes" ] ; then
diff --git a/dist/changes-5.1.0 b/dist/changes-5.1.0
new file mode 100644
index 0000000000..c9fdba2685
--- /dev/null
+++ b/dist/changes-5.1.0
@@ -0,0 +1,129 @@
+Qt 5.1 introduces many new features and improvements as well as bugfixes
+over the 5.0.x series. For more details, refer to the online documentation
+included in this distribution. The documentation is also available online:
+
+ http://qt-project.org/doc/qt-5.1
+
+The Qt version 5.1 series is binary compatible with the 5.0.x series.
+Applications compiled for 5.0 will continue to run with 5.1.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+ http://bugreports.qt-project.org/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* General *
+****************************************************************************
+
+General Improvements
+--------------------
+
+ - Q_PROPERTY gained a MEMBER attribute that let you associate a property to a
+ class member without requiring to explicitly writing a getter or a setter
+
+
+Third party components
+----------------------
+
+ -
+
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
+- QtWidgets
+
+ * [QTBUG-8836] QAbstractItemView now allows manual deselect in
+ SingleSelection mode (with control modifier)
+
+****************************************************************************
+* Library *
+****************************************************************************
+
+QtCore
+------
+
+ - QRect:
+ * Added marginsAdded(), marginsRemoved() and operators +, -, +=, -=
+ taking a QMargins object allowing for conveniently adding or removing
+ margins.
+ - QMargins:
+ * Added operators for adding and subtracting QMargins objects,
+ multiplication and division for int/qreal and unary minus.
+
+ - QMessageAuthenticationCode
+ * New class for hash-based message authentication code added to QtCore.
+
+ - QRegularExpression
+ * It's now possible to know the names of the named capturing groups
+ inside the pattern string, as well as the numerical index of each
+ named capturing group.
+
+ - QPointer
+ * It is now possible to create a QPointer with a const templated type.
+
+ -
+
+QtGui
+-----
+
+ - QOffscreenSurface
+ * New class for rendering graphics using OpenGL in an arbitrary thread
+ without needing to use a hidden QWindow.
+
+
+QtNetwork
+---------
+
+ -
+
+QtWidgets
+---------
+
+- QGraphicsView:
+ * Added function rubberBandRect() and signal rubberBandChanged.
+
+****************************************************************************
+* Database Drivers *
+****************************************************************************
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Qt for Linux/X11
+----------------
+ -
+
+Qt for Windows
+--------------
+ -
+
+Qt for Mac OS X
+---------------
+ -
+
+Qt for Embedded Linux
+---------------------
+
+
+Qt for Windows CE
+-----------------
+
+
+****************************************************************************
+* Compiler Specific Changes *
+****************************************************************************
+
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+
diff --git a/doc/global/qt-cpp-ignore.qdocconf b/doc/global/qt-cpp-ignore.qdocconf
index 6dd1536c1f..89d24152a2 100644
--- a/doc/global/qt-cpp-ignore.qdocconf
+++ b/doc/global/qt-cpp-ignore.qdocconf
@@ -75,12 +75,10 @@ Cpp.ignoretokens += \
QM_EXPORT_XML \
QT_ASCII_CAST_WARN \
QT_ASCII_CAST_WARN_CONSTRUCTOR \
- QT_BEGIN_HEADER \
QT_BEGIN_INCLUDE_NAMESPACE \
QT_BEGIN_NAMESPACE \
QT_BOOTSTRAPPED \
QT_DESIGNER_STATIC \
- QT_END_HEADER \
QT_END_INCLUDE_NAMESPACE \
QT_END_NAMESPACE \
QT_FASTCALL \
diff --git a/doc/global/template/style/offline.css b/doc/global/template/style/offline.css
index 40257730ff..0e4dd5e9a4 100644
--- a/doc/global/template/style/offline.css
+++ b/doc/global/template/style/offline.css
@@ -66,6 +66,11 @@ color: #44a51c;
text-align:left;
}
+/*
+-----------
+offline viewing: HTML links display an icon
+-----------
+*/
a[href*="http://"], a[href*="ftp://"],a[href*="https://"]
{
text-decoration: none;
@@ -127,7 +132,6 @@ Top navigation
.qtref{
display: block;
position: relative;
-top: -76px;
height:15px;
z-index: 1;
font-size:11px;
@@ -136,10 +140,11 @@ float:right;
}
.naviNextPrevious{
+clear: both;
display: block;
position: relative;
text-align: right;
-top: -53px;
+top: -47px;
float:right;
height:20px;
z-index:1;
@@ -167,6 +172,14 @@ padding-right:20px;
height:20px;
margin-left:30px;
}
+/*
+-----------
+footer and license
+-----------
+*/
+.footer{
+text-align:center
+}
/* table of content
no display
@@ -390,10 +403,15 @@ text-align: left;
.cpp{
display: block;
-margin: 10;
-overflow: hidden;
-overflow-x: hidden;
-overflow-y: hidden;
+margin: 10px;
+overflow: auto;
+padding: 20px 20px 20px 20px;
+}
+
+.js{
+display: block;
+margin: 10px;
+overflow: auto;
padding: 20px 20px 20px 20px;
}
@@ -424,9 +442,7 @@ padding: 3px 15px 3px 0;
.qml{
display: block;
margin: 10;
-overflow: hidden;
-overflow-x: hidden;
-overflow-y: hidden;
+overflow: auto;
padding: 20px 20px 20px 20px;
}
@@ -459,6 +475,7 @@ Content table
@media print{
.toc {
float: right;
+clear: right;
padding-bottom: 10px;
padding-top: 50px;
width: 100%;
@@ -470,8 +487,8 @@ background-repeat:no-repeat;
@media screen{
.toc{
-clear:both;
float:right;
+clear: right;
vertical-align:top;
-moz-border-radius: 7px 7px 7px 7px;
-webkit-border-radius: 7px 7px 7px 7px;
@@ -485,11 +502,7 @@ padding-bottom:10px;
height: auto;
width: 200px;
text-align:left;
-z-index:2;
margin-left:20px;
-margin-right:20px;
-margin-top:0px;
-padding-top:0px;
}
}
diff --git a/doc/global/template/style/online.css b/doc/global/template/style/online.css
index 9dff745358..7809783fa7 100644
--- a/doc/global/template/style/online.css
+++ b/doc/global/template/style/online.css
@@ -127,7 +127,6 @@ margin-left: 20px;
text-align:left
}
.nav-main-content{
-font-weight:bold;
margin-right: 20px;
display:inline-block;
}
@@ -156,9 +155,7 @@ left: 30px;
}
.qtref{
display: block;
-position: relative;
top: -76px;
-height:15px;
z-index: 1;
font-size:11px;
padding-right:10px;
@@ -171,7 +168,7 @@ text-align: right;
float:right;
z-index:1;
padding-right:10px;
-vertical-align:top;
+padding-top:4px;
}
@@ -196,16 +193,12 @@ margin-left:30px;
.breadcrumb{
display: block;
position: relative;
-top:-20px;
-/*border-top:2px solid #ffffff;*/
-border-bottom: 1px solid #cecece;
-background-color:#F2F2F2;
z-index:1;
height:20px;
padding:0px;
margin:0px;
padding-left:10px;
-padding-top:2px;
+padding-top:12px;
margin-left:-5px;
margin-right:-5px;
}
@@ -216,7 +209,6 @@ margin-right:-5px;
}
.breadcrumb ul li{
-background-color:#F2F2F2;
list-style-type:none;
padding:0;
margin:0;
@@ -236,7 +228,6 @@ padding-left:20px;
.breadcrumb li a{
-color:#2C418D;
display:block;
text-decoration:none;
background:url(../images/arrow.png);
@@ -506,10 +497,15 @@ text-align: left;
.cpp{
display: block;
-margin: 10;
-overflow: hidden;
-overflow-x: hidden;
-overflow-y: hidden;
+margin: 10px;
+overflow: auto;
+padding: 20px 20px 20px 20px;
+}
+
+.js{
+display: block;
+margin: 10px;
+overflow: auto;
padding: 20px 20px 20px 20px;
}
@@ -539,10 +535,8 @@ padding: 3px 15px 3px 0;
.qml{
display: block;
-margin: 10;
-overflow: hidden;
-overflow-x: hidden;
-overflow-y: hidden;
+margin: 10px;
+overflow: auto;
padding: 20px 20px 20px 20px;
}
@@ -576,6 +570,7 @@ Content table
@media print{
.toc {
float: right;
+clear: right;
padding-bottom: 10px;
padding-top: 50px;
width: 100%;
@@ -587,7 +582,10 @@ background-repeat:no-repeat;
@media screen{
.toc{
-clear:both;
+clear: both;
+clear: right;
+position: relative;
+top: 83px;
float:right;
vertical-align:top;
-moz-border-radius: 7px 7px 7px 7px;
@@ -602,11 +600,7 @@ padding-bottom:10px;
height: auto;
width: 200px;
text-align:left;
-z-index:2;
margin-left:20px;
-margin-right:20px;
-margin-top:0px;
-padding-top:0px;
}
}
diff --git a/doc/src/examples/customtypesending.qdoc b/doc/src/examples/customtypesending.qdoc
index 6cb28b1bd4..695ac2e057 100644
--- a/doc/src/examples/customtypesending.qdoc
+++ b/doc/src/examples/customtypesending.qdoc
@@ -61,7 +61,7 @@
message to be sent.
The \c Message class is defined in the following way:
-
+
\snippet examples/tools/customtypesending/message.h custom type definition
The type is declared to the meta-type system with the Q_DECLARE_METATYPE()
diff --git a/examples/dbus/complexpingpong/complexping.cpp b/examples/dbus/complexpingpong/complexping.cpp
index b094bfd247..61c918534f 100644
--- a/examples/dbus/complexpingpong/complexping.cpp
+++ b/examples/dbus/complexpingpong/complexping.cpp
@@ -82,7 +82,7 @@ void Ping::start(const QString &name, const QString &oldValue, const QString &ne
if (!reply.isNull())
printf("value = %s\n", qPrintable(reply.toString()));
} else if (line.startsWith("value=")) {
- iface->setProperty("value", line.mid(6));
+ iface->setProperty("value", line.mid(6));
} else {
QDBusReply<QDBusVariant> reply = iface->call("query", line);
if (reply.isValid())
@@ -92,7 +92,7 @@ void Ping::start(const QString &name, const QString &oldValue, const QString &ne
if (iface->lastError().isValid())
fprintf(stderr, "Call failed: %s\n", qPrintable(iface->lastError().message()));
}
-}
+}
int main(int argc, char **argv)
{
diff --git a/examples/dbus/complexpingpong/complexpong.cpp b/examples/dbus/complexpingpong/complexpong.cpp
index 3e4ba84001..fe122345f0 100644
--- a/examples/dbus/complexpingpong/complexpong.cpp
+++ b/examples/dbus/complexpingpong/complexpong.cpp
@@ -94,10 +94,10 @@ int main(int argc, char **argv)
if (!QDBusConnection::sessionBus().registerService(SERVICE_NAME)) {
fprintf(stderr, "%s\n",
- qPrintable(QDBusConnection::sessionBus().lastError().message()));
+ qPrintable(QDBusConnection::sessionBus().lastError().message()));
exit(1);
}
-
+
app.exec();
return 0;
}
diff --git a/examples/dbus/pingpong/pong.cpp b/examples/dbus/pingpong/pong.cpp
index 203bf53e0e..5f242569f1 100644
--- a/examples/dbus/pingpong/pong.cpp
+++ b/examples/dbus/pingpong/pong.cpp
@@ -67,13 +67,13 @@ int main(int argc, char **argv)
if (!QDBusConnection::sessionBus().registerService(SERVICE_NAME)) {
fprintf(stderr, "%s\n",
- qPrintable(QDBusConnection::sessionBus().lastError().message()));
+ qPrintable(QDBusConnection::sessionBus().lastError().message()));
exit(1);
}
Pong pong;
QDBusConnection::sessionBus().registerObject("/", &pong, QDBusConnection::ExportAllSlots);
-
+
app.exec();
return 0;
}
diff --git a/examples/ipc/ipc.pro b/examples/ipc/ipc.pro
index f302b836af..4b4b3870a4 100644
--- a/examples/ipc/ipc.pro
+++ b/examples/ipc/ipc.pro
@@ -3,4 +3,4 @@ requires(qtHaveModule(widgets))
TEMPLATE = subdirs
# no QSharedMemory
!vxworks:!qnx:SUBDIRS = sharedmemory
-!wince*: SUBDIRS += localfortuneserver localfortuneclient
+!wince*:qtHaveModule(network): SUBDIRS += localfortuneserver localfortuneclient
diff --git a/examples/ipc/sharedmemory/dialog.cpp b/examples/ipc/sharedmemory/dialog.cpp
index 3b41c22d3f..2be62b1b47 100644
--- a/examples/ipc/sharedmemory/dialog.cpp
+++ b/examples/ipc/sharedmemory/dialog.cpp
@@ -182,7 +182,7 @@ void Dialog::loadFromMemory()
*/
void Dialog::detach()
{
- if (!sharedMemory.detach())
+ if (!sharedMemory.detach())
ui.label->setText(tr("Unable to detach from shared memory."));
}
diff --git a/examples/network/doc/src/blockingfortuneclient.qdoc b/examples/network/doc/src/blockingfortuneclient.qdoc
index bff2e29ea5..2d77d3fcba 100644
--- a/examples/network/doc/src/blockingfortuneclient.qdoc
+++ b/examples/network/doc/src/blockingfortuneclient.qdoc
@@ -43,7 +43,7 @@
QTcpSocket::connectToHost() returns immediately, and when the connection
has been established, QTcpSocket emits
\l{QTcpSocket::connected()}{connected()}.
-
+
\li \e{The synchronous (blocking) approach.} In non-GUI and multithreaded
applications, you can call the \c waitFor...() functions (e.g.,
QTcpSocket::waitForConnected()) to suspend the calling thread until the
@@ -208,7 +208,7 @@
\snippet blockingfortuneclient/blockingclient.cpp 3
\codeline
\snippet blockingfortuneclient/blockingclient.cpp 4
-
+
Here, we simply display the fortune we received as the argument.
\sa {Fortune Client Example}, {Fortune Server Example}
diff --git a/examples/network/doc/src/threadedfortuneserver.qdoc b/examples/network/doc/src/threadedfortuneserver.qdoc
index fe627d0141..1b64e30226 100644
--- a/examples/network/doc/src/threadedfortuneserver.qdoc
+++ b/examples/network/doc/src/threadedfortuneserver.qdoc
@@ -48,8 +48,8 @@
FortuneServer inherits QTcpServer and reimplements
QTcpServer::incomingConnection(). We also use it for storing the list of
- random fortunes.
-
+ random fortunes.
+
\snippet threadedfortuneserver/fortuneserver.cpp 0
We use FortuneServer's constructor to simply generate the list of
@@ -71,7 +71,7 @@
QThread::run(), and it has a signal for reporting errors.
\snippet threadedfortuneserver/fortunethread.cpp 0
-
+
FortuneThread's constructor simply stores the socket descriptor and
fortune text, so that they are available for run() later on.
@@ -101,7 +101,7 @@
But unlike the previous example, we finish off by calling
QTcpSocket::waitForDisconnected(), which blocks the calling thread until
the socket has disconnected. Because we are running in a separate thread,
- the GUI will remain responsive.
+ the GUI will remain responsive.
\sa {Fortune Server Example}, {Fortune Client Example}, {Blocking Fortune
Client Example}
diff --git a/examples/network/http/httpwindow.cpp b/examples/network/http/httpwindow.cpp
index 2f795ebe7f..2b689c7770 100644
--- a/examples/network/http/httpwindow.cpp
+++ b/examples/network/http/httpwindow.cpp
@@ -180,7 +180,7 @@ void HttpWindow::httpFinished()
tr("Download failed: %1.")
.arg(reply->errorString()));
downloadButton->setEnabled(true);
- } else if (!redirectionTarget.isNull()) {
+ } else if (!redirectionTarget.isNull()) {
QUrl newUrl = url.resolved(redirectionTarget.toUrl());
if (QMessageBox::question(this, tr("HTTP"),
tr("Redirect to %1 ?").arg(newUrl.toString()),
@@ -256,7 +256,7 @@ void HttpWindow::sslErrors(QNetworkReply*,const QList<QSslError> &errors)
errorString += ", ";
errorString += error.errorString();
}
-
+
if (QMessageBox::warning(this, tr("HTTP"),
tr("One or more SSL errors has occurred: %1").arg(errorString),
QMessageBox::Ignore | QMessageBox::Abort) == QMessageBox::Ignore) {
diff --git a/examples/network/network.pro b/examples/network/network.pro
index 342297528b..be4ccdbddf 100644
--- a/examples/network/network.pro
+++ b/examples/network/network.pro
@@ -1,3 +1,5 @@
+requires(qtHaveModule(network))
+
TEMPLATE = subdirs
SUBDIRS = \
dnslookup \
diff --git a/examples/network/securesocketclient/sslclient.h b/examples/network/securesocketclient/sslclient.h
index 3caf6e2af1..8ebf2cc536 100644
--- a/examples/network/securesocketclient/sslclient.h
+++ b/examples/network/securesocketclient/sslclient.h
@@ -57,7 +57,7 @@ class SslClient : public QWidget
public:
SslClient(QWidget *parent = 0);
~SslClient();
-
+
private slots:
void updateEnabledState();
void secureConnect();
diff --git a/examples/network/torrent/addtorrentdialog.cpp b/examples/network/torrent/addtorrentdialog.cpp
index fac75ba465..d168633df3 100644
--- a/examples/network/torrent/addtorrentdialog.cpp
+++ b/examples/network/torrent/addtorrentdialog.cpp
@@ -117,14 +117,14 @@ void AddTorrentDialog::setTorrent(const QString &torrentFile)
if (lastDestinationDirectory.isEmpty())
lastDestinationDirectory = lastDirectory;
-
+
MetaInfo metaInfo;
QFile torrent(torrentFile);
if (!torrent.open(QFile::ReadOnly) || !metaInfo.parse(torrent.readAll())) {
enableOkButton();
return;
}
-
+
ui.torrentFile->setText(torrentFile);
ui.announceUrl->setText(metaInfo.announceUrl());
if (metaInfo.comment().isEmpty())
diff --git a/examples/network/torrent/bencodeparser.cpp b/examples/network/torrent/bencodeparser.cpp
index 2abc41a852..6ef7234539 100644
--- a/examples/network/torrent/bencodeparser.cpp
+++ b/examples/network/torrent/bencodeparser.cpp
@@ -81,26 +81,26 @@ bool BencodeParser::getByteString(QByteArray *byteString)
const int contentSize = content.size();
int size = -1;
do {
- char c = content.at(index);
- if (c < '0' || c > '9') {
- if (size == -1)
- return false;
- if (c != ':') {
- errString = QString("Unexpected character at pos %1: %2")
- .arg(index).arg(c);
- return false;
- }
- ++index;
- break;
- }
- if (size == -1)
- size = 0;
- size *= 10;
- size += c - '0';
+ char c = content.at(index);
+ if (c < '0' || c > '9') {
+ if (size == -1)
+ return false;
+ if (c != ':') {
+ errString = QString("Unexpected character at pos %1: %2")
+ .arg(index).arg(c);
+ return false;
+ }
+ ++index;
+ break;
+ }
+ if (size == -1)
+ size = 0;
+ size *= 10;
+ size += c - '0';
} while (++index < contentSize);
if (byteString)
- *byteString = content.mid(index, size);
+ *byteString = content.mid(index, size);
index += size;
return true;
}
@@ -109,38 +109,38 @@ bool BencodeParser::getInteger(qint64 *integer)
{
const int contentSize = content.size();
if (content.at(index) != 'i')
- return false;
+ return false;
++index;
qint64 num = -1;
bool negative = false;
do {
- char c = content.at(index);
- if (c < '0' || c > '9') {
- if (num == -1) {
- if (c != '-' || negative)
- return false;
- negative = true;
- continue;
- } else {
- if (c != 'e') {
- errString = QString("Unexpected character at pos %1: %2")
- .arg(index).arg(c);
- return false;
- }
- ++index;
- break;
- }
- }
- if (num == -1)
- num = 0;
- num *= 10;
- num += c - '0';
+ char c = content.at(index);
+ if (c < '0' || c > '9') {
+ if (num == -1) {
+ if (c != '-' || negative)
+ return false;
+ negative = true;
+ continue;
+ } else {
+ if (c != 'e') {
+ errString = QString("Unexpected character at pos %1: %2")
+ .arg(index).arg(c);
+ return false;
+ }
+ ++index;
+ break;
+ }
+ }
+ if (num == -1)
+ num = 0;
+ num *= 10;
+ num += c - '0';
} while (++index < contentSize);
if (integer)
- *integer = negative ? -num : num;
+ *integer = negative ? -num : num;
return true;
}
@@ -148,38 +148,38 @@ bool BencodeParser::getList(QList<QVariant> *list)
{
const int contentSize = content.size();
if (content.at(index) != 'l')
- return false;
+ return false;
- QList<QVariant> tmp;
+ QList<QVariant> tmp;
++index;
do {
- if (content.at(index) == 'e') {
- ++index;
- break;
- }
-
- qint64 number;
- QByteArray byteString;
- QList<QVariant> tmpList;
- QMap<QByteArray, QVariant> dictionary;
-
- if (getInteger(&number))
- tmp << number;
- else if (getByteString(&byteString))
- tmp << byteString;
- else if (getList(&tmpList))
- tmp << tmpList;
- else if (getDictionary(&dictionary))
- tmp << QVariant::fromValue<QMap<QByteArray, QVariant> >(dictionary);
- else {
- errString = QString("error at index %1").arg(index);
- return false;
- }
+ if (content.at(index) == 'e') {
+ ++index;
+ break;
+ }
+
+ qint64 number;
+ QByteArray byteString;
+ QList<QVariant> tmpList;
+ QMap<QByteArray, QVariant> dictionary;
+
+ if (getInteger(&number))
+ tmp << number;
+ else if (getByteString(&byteString))
+ tmp << byteString;
+ else if (getList(&tmpList))
+ tmp << tmpList;
+ else if (getDictionary(&dictionary))
+ tmp << QVariant::fromValue<QMap<QByteArray, QVariant> >(dictionary);
+ else {
+ errString = QString("error at index %1").arg(index);
+ return false;
+ }
} while (index < contentSize);
if (list)
- *list = tmp;
+ *list = tmp;
return true;
}
@@ -187,48 +187,48 @@ bool BencodeParser::getDictionary(QMap<QByteArray, QVariant> *dictionary)
{
const int contentSize = content.size();
if (content.at(index) != 'd')
- return false;
+ return false;
- QMap<QByteArray, QVariant> tmp;
+ QMap<QByteArray, QVariant> tmp;
++index;
do {
- if (content.at(index) == 'e') {
- ++index;
- break;
- }
-
- QByteArray key;
- if (!getByteString(&key))
- break;
-
- if (key == "info")
- infoStart = index;
-
- qint64 number;
- QByteArray byteString;
- QList<QVariant> tmpList;
- QMap<QByteArray, QVariant> dictionary;
-
- if (getInteger(&number))
- tmp.insert(key, number);
- else if (getByteString(&byteString))
- tmp.insert(key, byteString);
- else if (getList(&tmpList))
- tmp.insert(key, tmpList);
- else if (getDictionary(&dictionary))
- tmp.insert(key, QVariant::fromValue<QMap<QByteArray, QVariant> >(dictionary));
- else {
- errString = QString("error at index %1").arg(index);
- return false;
- }
-
- if (key == "info")
- infoLength = index - infoStart;
+ if (content.at(index) == 'e') {
+ ++index;
+ break;
+ }
+
+ QByteArray key;
+ if (!getByteString(&key))
+ break;
+
+ if (key == "info")
+ infoStart = index;
+
+ qint64 number;
+ QByteArray byteString;
+ QList<QVariant> tmpList;
+ QMap<QByteArray, QVariant> dictionary;
+
+ if (getInteger(&number))
+ tmp.insert(key, number);
+ else if (getByteString(&byteString))
+ tmp.insert(key, byteString);
+ else if (getList(&tmpList))
+ tmp.insert(key, tmpList);
+ else if (getDictionary(&dictionary))
+ tmp.insert(key, QVariant::fromValue<QMap<QByteArray, QVariant> >(dictionary));
+ else {
+ errString = QString("error at index %1").arg(index);
+ return false;
+ }
+
+ if (key == "info")
+ infoLength = index - infoStart;
} while (index < contentSize);
if (dictionary)
- *dictionary = tmp;
+ *dictionary = tmp;
return true;
}
diff --git a/examples/network/torrent/bencodeparser.h b/examples/network/torrent/bencodeparser.h
index 4fcaeab50a..5d3aeada04 100644
--- a/examples/network/torrent/bencodeparser.h
+++ b/examples/network/torrent/bencodeparser.h
@@ -54,7 +54,7 @@ class BencodeParser
{
public:
BencodeParser();
-
+
bool parse(const QByteArray &content);
QString errorString() const;
diff --git a/examples/network/torrent/filemanager.h b/examples/network/torrent/filemanager.h
index 721d62210d..41f1aa9a40 100644
--- a/examples/network/torrent/filemanager.h
+++ b/examples/network/torrent/filemanager.h
@@ -65,7 +65,7 @@ public:
inline void setMetaInfo(const MetaInfo &info) { metaInfo = info; }
inline void setDestinationFolder(const QString &directory) { destinationPath = directory; }
-
+
int read(int pieceIndex, int offset, int length);
void write(int pieceIndex, int offset, const QByteArray &data);
void verifyPiece(int pieceIndex);
diff --git a/examples/network/torrent/mainwindow.cpp b/examples/network/torrent/mainwindow.cpp
index 8d664abb93..649dbb0a77 100644
--- a/examples/network/torrent/mainwindow.cpp
+++ b/examples/network/torrent/mainwindow.cpp
@@ -130,7 +130,7 @@ MainWindow::MainWindow(QWidget *parent)
QAction *newTorrentAction = new QAction(QIcon(":/icons/bottom.png"), tr("Add &new torrent"), this);
pauseTorrentAction = new QAction(QIcon(":/icons/player_pause.png"), tr("&Pause torrent"), this);
removeTorrentAction = new QAction(QIcon(":/icons/player_stop.png"), tr("&Remove torrent"), this);
-
+
// File menu
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newTorrentAction);
diff --git a/examples/network/torrent/mainwindow.h b/examples/network/torrent/mainwindow.h
index f0c3ea62c9..6ba42be81f 100644
--- a/examples/network/torrent/mainwindow.h
+++ b/examples/network/torrent/mainwindow.h
@@ -65,7 +65,7 @@ public:
QSize sizeHint() const;
const TorrentClient *clientForRow(int row) const;
-
+
protected:
void closeEvent(QCloseEvent *event);
@@ -94,12 +94,12 @@ private slots:
void about();
void setActionsEnabled();
void acceptFileDrop(const QString &fileName);
-
+
private:
int rowOfClient(TorrentClient *client) const;
bool addTorrent(const QString &fileName, const QString &destinationFolder,
const QByteArray &resumeState = QByteArray());
-
+
TorrentView *torrentView;
QAction *pauseTorrentAction;
QAction *removeTorrentAction;
diff --git a/examples/network/torrent/metainfo.h b/examples/network/torrent/metainfo.h
index 741fe69299..17daca559e 100644
--- a/examples/network/torrent/metainfo.h
+++ b/examples/network/torrent/metainfo.h
@@ -100,7 +100,7 @@ public:
// Total size
qint64 totalSize() const;
-private:
+private:
QString errString;
QByteArray content;
QByteArray infoData;
diff --git a/examples/network/torrent/peerwireclient.h b/examples/network/torrent/peerwireclient.h
index 391a77b8d8..7cd08d90cb 100644
--- a/examples/network/torrent/peerwireclient.h
+++ b/examples/network/torrent/peerwireclient.h
@@ -63,7 +63,7 @@ struct TorrentBlock
&& offset == other.offset
&& length == other.length;
}
-
+
int pieceIndex;
int offset;
int length;
diff --git a/examples/network/torrent/torrentclient.cpp b/examples/network/torrent/torrentclient.cpp
index 748e5185fe..b5969e552e 100644
--- a/examples/network/torrent/torrentclient.cpp
+++ b/examples/network/torrent/torrentclient.cpp
@@ -1020,7 +1020,7 @@ void TorrentClient::blockReceived(int pieceIndex, int begin, const QByteArray &d
if (blocksLeftForPiece(piece) == 0) {
// Ask the file manager to verify the newly downloaded piece
d->fileManager.verifyPiece(piece->index);
-
+
// Remove this piece from all payloads
QMultiMap<PeerWireClient *, TorrentPiece *>::Iterator it = d->payloads.begin();
while (it != d->payloads.end()) {
@@ -1103,7 +1103,7 @@ void TorrentClient::scheduleUploads()
}
if ((client->peerWireState() & PeerWireClient::ChokingPeer) == 0) {
- if ((qrand() % 10) == 0)
+ if ((qrand() % 10) == 0)
client->abort();
else
client->chokePeer();
@@ -1245,7 +1245,7 @@ void TorrentClient::schedulePieceForClient(PeerWireClient *client)
if (d->state == WarmingUp || (qrand() & 4) == 0) {
int *occurrences = new int[d->pieceCount];
memset(occurrences, 0, d->pieceCount * sizeof(int));
-
+
// Count how many of each piece are available.
foreach (PeerWireClient *peer, d->connections) {
QBitArray peerPieces = peer->availablePieces();
@@ -1342,7 +1342,7 @@ void TorrentClient::requestMore(PeerWireClient *client)
? MaxBlocksInMultiMode : MaxBlocksInProgress);
if (numBlocksInProgress == maxInProgress)
return;
-
+
// Starting with the first piece that we're waiting for, request
// blocks until the quota is filled up.
foreach (TorrentPiece *piece, piecesInProgress) {
@@ -1446,7 +1446,7 @@ void TorrentClient::addToPeerList(const QList<TorrentPeer> &peerList)
// Skip our own server.
continue;
}
-
+
bool known = false;
foreach (TorrentPeer *knownPeer, d->peers) {
if (knownPeer->port == peer.port
diff --git a/examples/network/torrent/torrentclient.h b/examples/network/torrent/torrentclient.h
index be50189b53..7f48d1697c 100644
--- a/examples/network/torrent/torrentclient.h
+++ b/examples/network/torrent/torrentclient.h
@@ -124,7 +124,7 @@ public:
qint64 uploadedBytes() const;
int connectedPeerCount() const;
int seedCount() const;
-
+
// Accessors for the tracker
QByteArray peerId() const;
QByteArray infoHash() const;
@@ -142,7 +142,7 @@ signals:
void downloadCompleted();
void peerInfoUpdated();
-
+
void dataSent(int uploadedBytes);
void dataReceived(int downloadedBytes);
void progressUpdated(int percentProgress);
diff --git a/examples/network/torrent/trackerclient.h b/examples/network/torrent/trackerclient.h
index 17d237e665..6647422e3f 100644
--- a/examples/network/torrent/trackerclient.h
+++ b/examples/network/torrent/trackerclient.h
@@ -74,7 +74,7 @@ signals:
void uploadCountUpdated(qint64 newUploadCount);
void downloadCountUpdated(qint64 newDownloadCount);
-
+
void stopped();
protected:
@@ -99,7 +99,7 @@ private:
qint64 length;
QString uname;
QString pwd;
-
+
bool firstTrackerRequest;
bool lastTrackerRequest;
bool firstSeeding;
diff --git a/examples/opengl/cube/geometryengine.cpp b/examples/opengl/cube/geometryengine.cpp
index d573ade1e7..bf63934656 100644
--- a/examples/opengl/cube/geometryengine.cpp
+++ b/examples/opengl/cube/geometryengine.cpp
@@ -50,7 +50,7 @@ struct VertexData
};
GeometryEngine::GeometryEngine()
-{
+{
}
GeometryEngine::~GeometryEngine()
diff --git a/examples/opengl/cube/mainwidget.cpp b/examples/opengl/cube/mainwidget.cpp
index 0ba859c6b8..8c87de6736 100644
--- a/examples/opengl/cube/mainwidget.cpp
+++ b/examples/opengl/cube/mainwidget.cpp
@@ -68,7 +68,7 @@ void MainWidget::mouseReleaseEvent(QMouseEvent *e)
// Mouse release position - mouse press position
QVector2D diff = QVector2D(e->localPos()) - mousePressPosition;
- // Rotation axis is perpendicular to the mouse position difference
+ // Rotation axis is perpendicular to the mouse position difference
// vector
QVector3D n = QVector3D(diff.y(), diff.x(), 0.0).normalized();
diff --git a/examples/opengl/grabber/glwidget.cpp b/examples/opengl/grabber/glwidget.cpp
index f9e866b7c8..abe3a8540a 100644
--- a/examples/opengl/grabber/glwidget.cpp
+++ b/examples/opengl/grabber/glwidget.cpp
@@ -116,7 +116,7 @@ void GLWidget::initializeGL()
gear3 = makeGear(reflectance3, 1.3, 2.0, 0.5, 0.7, 10);
glEnable(GL_NORMALIZE);
- glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
+ glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}
void GLWidget::paintGL()
diff --git a/examples/opengl/grabber/glwidget.h b/examples/opengl/grabber/glwidget.h
index 91e10edb6e..976d22a421 100644
--- a/examples/opengl/grabber/glwidget.h
+++ b/examples/opengl/grabber/glwidget.h
@@ -90,7 +90,7 @@ private:
int yRot;
int zRot;
int gear1Rot;
-
+
QPoint lastPos;
};
diff --git a/examples/opengl/hellogl_es2/bubble.cpp b/examples/opengl/hellogl_es2/bubble.cpp
index 50d64f37da..3e0f053bc8 100644
--- a/examples/opengl/hellogl_es2/bubble.cpp
+++ b/examples/opengl/hellogl_es2/bubble.cpp
@@ -114,7 +114,7 @@ void Bubble::move(const QRect &bbox)
qreal rightOverflow = position.x() + radius - bbox.right();
qreal topOverflow = position.y() - radius - bbox.top();
qreal bottomOverflow = position.y() + radius - bbox.bottom();
-
+
if (leftOverflow < 0.0) {
position.setX(position.x() - 2 * leftOverflow);
vel.setX(-vel.x());
diff --git a/examples/opengl/hellogl_es2/glwidget.cpp b/examples/opengl/hellogl_es2/glwidget.cpp
index 2727c73fa5..a5c22447f0 100644
--- a/examples/opengl/hellogl_es2/glwidget.cpp
+++ b/examples/opengl/hellogl_es2/glwidget.cpp
@@ -70,7 +70,7 @@ void GLWidget::setScaling(int scale) {
m_fScale = 1 + qreal(scale -50) / 50 * 0.5;
else if (scale < 50)
m_fScale = 1- (qreal(50 - scale) / 50 * 1/2);
- else
+ else
m_fScale = 1;
}
@@ -316,7 +316,7 @@ void GLWidget::paintGL()
painter.drawText(20, 40, framesPerSecond + " fps");
painter.end();
-
+
swapBuffers();
QMutableListIterator<Bubble*> iter(bubbles);
diff --git a/examples/opengl/hellogl_es2/glwidget.h b/examples/opengl/hellogl_es2/glwidget.h
index 4536dc3749..8ed86b1e01 100644
--- a/examples/opengl/hellogl_es2/glwidget.h
+++ b/examples/opengl/hellogl_es2/glwidget.h
@@ -55,7 +55,7 @@ class GLWidget : public QGLWidget {
public:
GLWidget(QWidget *parent = 0);
~GLWidget();
-public slots:
+public slots:
void setScaling(int scale);
void setLogo();
void setTexture();
diff --git a/examples/opengl/hellogl_es2/mainwindow.cpp b/examples/opengl/hellogl_es2/mainwindow.cpp
index a9db386c4c..eb4ce0ac3e 100644
--- a/examples/opengl/hellogl_es2/mainwindow.cpp
+++ b/examples/opengl/hellogl_es2/mainwindow.cpp
@@ -57,7 +57,7 @@ MainWindow::MainWindow()
QTimer *timer = new QTimer(this);
QSlider *slider = new QSlider(this);
slider->setOrientation(Qt::Horizontal);
-
+
slider->setRange(0, 100);
slider->setSliderPosition(50);
timer->setInterval(10);
diff --git a/examples/opengl/overpainting/bubble.cpp b/examples/opengl/overpainting/bubble.cpp
index c64cca7e0d..dbcb72bc93 100644
--- a/examples/opengl/overpainting/bubble.cpp
+++ b/examples/opengl/overpainting/bubble.cpp
@@ -85,7 +85,7 @@ void Bubble::move(const QRect &bbox)
qreal rightOverflow = position.x() + radius - bbox.right();
qreal topOverflow = position.y() - radius - bbox.top();
qreal bottomOverflow = position.y() + radius - bbox.bottom();
-
+
if (leftOverflow < 0.0) {
position.setX(position.x() - 2 * leftOverflow);
vel.setX(-vel.x());
diff --git a/examples/opengl/paintedwindow/paintedwindow.cpp b/examples/opengl/paintedwindow/paintedwindow.cpp
index 9b0ddb6ab1..d891f8d563 100644
--- a/examples/opengl/paintedwindow/paintedwindow.cpp
+++ b/examples/opengl/paintedwindow/paintedwindow.cpp
@@ -56,7 +56,7 @@ PaintedWindow::PaintedWindow()
format.setSamples(4);
setSurfaceType(QWindow::OpenGLSurface);
- setFlags(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
+ setFlags(Qt::Window | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
setFormat(format);
create();
diff --git a/examples/qtconcurrent/imagescaling/imagescaling.cpp b/examples/qtconcurrent/imagescaling/imagescaling.cpp
index 6a0a73e867..01083edb4e 100644
--- a/examples/qtconcurrent/imagescaling/imagescaling.cpp
+++ b/examples/qtconcurrent/imagescaling/imagescaling.cpp
@@ -50,8 +50,8 @@ QImage scale(const QString &imageFileName)
return image.scaled(QSize(imageSize, imageSize), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
-Images::Images(QWidget *parent)
-: QWidget(parent)
+Images::Images(QWidget *parent)
+ : QWidget(parent)
{
setWindowTitle(tr("Image loading and scaling example"));
resize(800, 600);
@@ -66,11 +66,11 @@ Images::Images(QWidget *parent)
cancelButton = new QPushButton(tr("Cancel"));
cancelButton->setEnabled(false);
connect(cancelButton, SIGNAL(clicked()), imageScaling, SLOT(cancel()));
-
+
pauseButton = new QPushButton(tr("Pause/Resume"));
pauseButton->setEnabled(false);
connect(pauseButton, SIGNAL(clicked()), imageScaling, SLOT(togglePaused()));
-
+
QHBoxLayout *buttonLayout = new QHBoxLayout();
buttonLayout->addWidget(openButton);
buttonLayout->addWidget(cancelButton);
@@ -101,7 +101,7 @@ void Images::open()
}
// Show a file open dialog at QStandardPaths::PicturesLocation.
- QStringList files = QFileDialog::getOpenFileNames(this, tr("Select Images"),
+ QStringList files = QFileDialog::getOpenFileNames(this, tr("Select Images"),
QStandardPaths::writableLocation(QStandardPaths::PicturesLocation),
"*.jpg *.png");
@@ -143,4 +143,3 @@ void Images::finished()
}
#endif // QT_NO_CONCURRENT
-
diff --git a/examples/qtconcurrent/progressdialog/main.cpp b/examples/qtconcurrent/progressdialog/main.cpp
index 155bb2ee11..c646105db6 100644
--- a/examples/qtconcurrent/progressdialog/main.cpp
+++ b/examples/qtconcurrent/progressdialog/main.cpp
@@ -69,7 +69,7 @@ int main(int argc, char **argv)
// Create a progress dialog.
QProgressDialog dialog;
dialog.setLabelText(QString("Progressing using %1 thread(s)...").arg(QThread::idealThreadCount()));
-
+
// Create a QFutureWatcher and connect signals and slots.
QFutureWatcher<void> futureWatcher;
QObject::connect(&futureWatcher, SIGNAL(finished()), &dialog, SLOT(reset()));
@@ -82,7 +82,7 @@ int main(int argc, char **argv)
// Display the dialog and start the event loop.
dialog.exec();
-
+
futureWatcher.waitForFinished();
// Query the future to check if was canceled.
diff --git a/examples/qtestlib/tutorial5/benchmarking.cpp b/examples/qtestlib/tutorial5/benchmarking.cpp
index 4ad984212b..55d25e8a36 100644
--- a/examples/qtestlib/tutorial5/benchmarking.cpp
+++ b/examples/qtestlib/tutorial5/benchmarking.cpp
@@ -81,7 +81,7 @@ void TestBenchmark::multiple()
QFETCH(bool, useLocaleCompare);
QString str1 = QLatin1String("This is a test string");
QString str2 = QLatin1String("This is a test string");
-
+
int result;
if (useLocaleCompare) {
QBENCHMARK {
@@ -101,7 +101,7 @@ void TestBenchmark::series_data()
{
QTest::addColumn<bool>("useLocaleCompare");
QTest::addColumn<int>("stringSize");
-
+
for (int i = 1; i < 10000; i += 2000) {
QByteArray size = QByteArray::number(i);
QTest::newRow(("locale aware compare--" + size).constData()) << true << i;
diff --git a/examples/sql/doc/src/querymodel.qdoc b/examples/sql/doc/src/querymodel.qdoc
index 9d9729192a..b25cc745e3 100644
--- a/examples/sql/doc/src/querymodel.qdoc
+++ b/examples/sql/doc/src/querymodel.qdoc
@@ -32,7 +32,7 @@
\brief The Query Model example shows how to make customized versions of
data obtained from a SQL query, using a model that encapsulates
- the query and table views to display the results.
+ the query and table views to display the results.
\image querymodel-example.png
*/
diff --git a/examples/sql/doc/src/relationaltablemodel.qdoc b/examples/sql/doc/src/relationaltablemodel.qdoc
index cf10322c2d..36fe7e2dfb 100644
--- a/examples/sql/doc/src/relationaltablemodel.qdoc
+++ b/examples/sql/doc/src/relationaltablemodel.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example relationaltablemodel
\title Relational Table Model Example
\ingroup sql_examples
diff --git a/examples/sql/doc/src/tablemodel.qdoc b/examples/sql/doc/src/tablemodel.qdoc
index 146025c2d0..be1fb6b488 100644
--- a/examples/sql/doc/src/tablemodel.qdoc
+++ b/examples/sql/doc/src/tablemodel.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example tablemodel
\title Table Model Example
\ingroup sql_examples
diff --git a/examples/threads/queuedcustomtype/main.cpp b/examples/threads/queuedcustomtype/main.cpp
index 337970445f..98933c66f3 100644
--- a/examples/threads/queuedcustomtype/main.cpp
+++ b/examples/threads/queuedcustomtype/main.cpp
@@ -81,7 +81,7 @@ QImage createImage(int width, int height)
int x = 0;
int y = 0;
int starWidth = image.width()/3;
- int starHeight = image.height()/3;
+ int starHeight = image.height()/3;
QRect rect(x, y, starWidth, starHeight);
diff --git a/examples/tools/doc/contiguouscache.qdoc b/examples/tools/doc/contiguouscache.qdoc
index a02c1796c6..2f7ea716e6 100644
--- a/examples/tools/doc/contiguouscache.qdoc
+++ b/examples/tools/doc/contiguouscache.qdoc
@@ -70,7 +70,7 @@
And thats it. A perfectly reasonable cache, using minimal memory for a very large
list. In this case the accessor for getting the words into the cache
- generates random information rather than fixed information. This allows you
+ generates random information rather than fixed information. This allows you
to see how the cache range is kept for a local number of rows when running the
example.
diff --git a/examples/tools/doc/src/customtype.qdoc b/examples/tools/doc/src/customtype.qdoc
index a4a05350f3..56172a4e26 100644
--- a/examples/tools/doc/src/customtype.qdoc
+++ b/examples/tools/doc/src/customtype.qdoc
@@ -104,7 +104,7 @@
With the type fully defined, implemented, and integrated with the
meta-object system, we can now use it.
- \section1 Using the Message
+ \section1 Using the Message
In the example's \c{main()} function, we show how a \c Message object can
be printed to the console by sending it to the debug stream:
diff --git a/examples/touch/fingerpaint/scribblearea.cpp b/examples/touch/fingerpaint/scribblearea.cpp
index f672a3fdd1..0d13e4579d 100644
--- a/examples/touch/fingerpaint/scribblearea.cpp
+++ b/examples/touch/fingerpaint/scribblearea.cpp
@@ -154,7 +154,7 @@ void ScribbleArea::resizeImage(QImage *image, const QSize &newSize)
//! [21]
void ScribbleArea::print()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
QPrinter printer(QPrinter::HighResolution);
QPrintDialog printDialog(&printer, this);
diff --git a/examples/touch/pinchzoom/mouse.cpp b/examples/touch/pinchzoom/mouse.cpp
index 9c5ca86e6a..40e6ccb127 100644
--- a/examples/touch/pinchzoom/mouse.cpp
+++ b/examples/touch/pinchzoom/mouse.cpp
@@ -158,7 +158,7 @@ void Mouse::timerEvent(QTimerEvent *)
foreach (QGraphicsItem *item, dangerMice) {
if (item == this)
continue;
-
+
QLineF lineToMouse(QPointF(0, 0), mapFromItem(item, 0, 0));
qreal angleToMouse = ::acos(lineToMouse.dx() / lineToMouse.length());
if (lineToMouse.dy() < 0)
diff --git a/examples/widgets/animation/appchooser/main.cpp b/examples/widgets/animation/appchooser/main.cpp
index 2184d1bcdf..a65e998b32 100644
--- a/examples/widgets/animation/appchooser/main.cpp
+++ b/examples/widgets/animation/appchooser/main.cpp
@@ -108,7 +108,7 @@ void createStates(const QObjectList &objects,
void createAnimations(const QObjectList &objects, QStateMachine *machine)
{
for (int i=0; i<objects.size(); ++i)
- machine->addDefaultAnimation(new QPropertyAnimation(objects.at(i), "geometry"));
+ machine->addDefaultAnimation(new QPropertyAnimation(objects.at(i), "geometry"));
}
int main(int argc, char **argv)
diff --git a/examples/widgets/animation/easing/window.h b/examples/widgets/animation/easing/window.h
index b47f236d95..d7fa927b49 100644
--- a/examples/widgets/animation/easing/window.h
+++ b/examples/widgets/animation/easing/window.h
@@ -63,11 +63,11 @@ private slots:
void periodChanged(double);
void amplitudeChanged(double);
void overshootChanged(double);
-
+
private:
void createCurveIcons();
void startAnimation();
-
+
Ui::Form m_ui;
QGraphicsScene m_scene;
PixmapItem *m_item;
diff --git a/examples/widgets/animation/stickman/animation.cpp b/examples/widgets/animation/stickman/animation.cpp
index ebfbd1b5b8..730ee236e4 100644
--- a/examples/widgets/animation/stickman/animation.cpp
+++ b/examples/widgets/animation/stickman/animation.cpp
@@ -45,13 +45,13 @@
#include <QIODevice>
#include <QDataStream>
-class Frame
+class Frame
{
public:
Frame() {
}
- int nodeCount() const
+ int nodeCount() const
{
return m_nodePositions.size();
}
@@ -70,7 +70,7 @@ public:
{
m_nodePositions[idx] = pos;
}
-
+
private:
QVector<QPointF> m_nodePositions;
};
@@ -81,7 +81,7 @@ Animation::Animation()
m_frames.append(new Frame);
}
-Animation::~Animation()
+Animation::~Animation()
{
qDeleteAll(m_frames);
}
@@ -89,10 +89,10 @@ Animation::~Animation()
void Animation::setTotalFrames(int totalFrames)
{
while (m_frames.size() < totalFrames)
- m_frames.append(new Frame);
+ m_frames.append(new Frame);
while (totalFrames < m_frames.size())
- delete m_frames.takeLast();
+ delete m_frames.takeLast();
}
int Animation::totalFrames() const
@@ -165,15 +165,15 @@ void Animation::load(QIODevice *device)
QDataStream stream(device);
stream >> m_name;
-
+
int frameCount;
stream >> frameCount;
for (int i=0; i<frameCount; ++i) {
-
+
int nodeCount;
stream >> nodeCount;
-
+
Frame *frame = new Frame;
frame->setNodeCount(nodeCount);
diff --git a/examples/widgets/animation/stickman/lifecycle.cpp b/examples/widgets/animation/stickman/lifecycle.cpp
index c49fac7905..09ca45e55b 100644
--- a/examples/widgets/animation/stickman/lifecycle.cpp
+++ b/examples/widgets/animation/stickman/lifecycle.cpp
@@ -65,7 +65,7 @@ public:
if (QSignalTransition::eventTest(e)) {
QVariant key = static_cast<QStateMachine::SignalEvent*>(e)->arguments().at(0);
return (key.toInt() == int(m_key));
- }
+ }
return false;
}
@@ -100,7 +100,7 @@ LifeCycle::LifeCycle(StickMan *stickMan, GraphicsView *keyReceiver)
const int stickManNodeCount = m_stickMan->nodeCount();
for (int i=0; i<stickManNodeCount; ++i) {
QPropertyAnimation *pa = new QPropertyAnimation(m_stickMan->node(i), "pos");
- m_animationGroup->addAnimation(pa);
+ m_animationGroup->addAnimation(pa);
}
// Set up initial state graph
@@ -111,14 +111,14 @@ LifeCycle::LifeCycle(StickMan *stickMan, GraphicsView *keyReceiver)
m_alive = new QState(m_machine);
m_alive->setObjectName("alive");
-
+
// Make it blink when lightning strikes before entering dead animation
- QState *lightningBlink = new QState(m_machine);
+ QState *lightningBlink = new QState(m_machine);
lightningBlink->assignProperty(m_stickMan->scene(), "backgroundBrush", QColor(Qt::white));
lightningBlink->assignProperty(m_stickMan, "penColor", QColor(Qt::black));
lightningBlink->assignProperty(m_stickMan, "fillColor", QColor(Qt::white));
lightningBlink->assignProperty(m_stickMan, "isDead", true);
-
+
//! [5]
QTimer *timer = new QTimer(lightningBlink);
timer->setSingleShot(true);
@@ -126,13 +126,13 @@ LifeCycle::LifeCycle(StickMan *stickMan, GraphicsView *keyReceiver)
QObject::connect(lightningBlink, SIGNAL(entered()), timer, SLOT(start()));
QObject::connect(lightningBlink, SIGNAL(exited()), timer, SLOT(stop()));
//! [5]
-
+
m_dead = new QState(m_machine);
m_dead->assignProperty(m_stickMan->scene(), "backgroundBrush", QColor(Qt::black));
m_dead->assignProperty(m_stickMan, "penColor", QColor(Qt::white));
m_dead->assignProperty(m_stickMan, "fillColor", QColor(Qt::black));
m_dead->setObjectName("dead");
-
+
// Idle state (sets no properties)
m_idle = new QState(m_alive);
m_idle->setObjectName("idle");
@@ -172,7 +172,7 @@ void LifeCycle::addActivity(const QString &fileName, Qt::Key key, QObject *sende
QState *LifeCycle::makeState(QState *parentState, const QString &animationFileName)
{
QState *topLevel = new QState(parentState);
-
+
Animation animation;
{
QFile file(animationFileName);
@@ -186,7 +186,7 @@ QState *LifeCycle::makeState(QState *parentState, const QString &animationFileNa
animation.setCurrentFrame(i);
//! [1]
- QState *frameState = new QState(topLevel);
+ QState *frameState = new QState(topLevel);
const int nodeCount = animation.nodeCount();
for (int j=0; j<nodeCount; ++j)
frameState->assignProperty(m_stickMan->node(j), "pos", animation.nodePos(j));
@@ -199,7 +199,7 @@ QState *LifeCycle::makeState(QState *parentState, const QString &animationFileNa
//! [2]
previousState->addTransition(previousState, SIGNAL(propertiesAssigned()), frameState);
//! [2]
-
+
previousState = frameState;
}
diff --git a/examples/widgets/animation/stickman/node.cpp b/examples/widgets/animation/stickman/node.cpp
index b47a1e8433..0694ee3a2f 100644
--- a/examples/widgets/animation/stickman/node.cpp
+++ b/examples/widgets/animation/stickman/node.cpp
@@ -62,7 +62,7 @@ QRectF Node::boundingRect() const
}
void Node::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
-{
+{
painter->setPen(Qt::white);
painter->drawEllipse(QPointF(0.0, 0.0), 5.0, 5.0);
}
@@ -83,7 +83,7 @@ void Node::mousePressEvent(QGraphicsSceneMouseEvent *)
void Node::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (m_dragging)
- setPos(mapToParent(event->pos()));
+ setPos(mapToParent(event->pos()));
}
void Node::mouseReleaseEvent(QGraphicsSceneMouseEvent *)
diff --git a/examples/widgets/animation/stickman/stickman.h b/examples/widgets/animation/stickman/stickman.h
index 337fe4a794..08928a48a6 100644
--- a/examples/widgets/animation/stickman/stickman.h
+++ b/examples/widgets/animation/stickman/stickman.h
@@ -62,7 +62,7 @@ public:
virtual QRectF boundingRect() const;
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
- int nodeCount() const;
+ int nodeCount() const;
Node *node(int idx) const;
void setDrawSticks(bool on);
@@ -90,7 +90,7 @@ private:
Node *m_nodes[NodeCount];
qreal m_perfectBoneLengths[BoneCount];
-
+
uint m_sticks : 1;
uint m_isDead : 1;
uint m_reserved : 30;
diff --git a/examples/widgets/animation/sub-attaq/boat_p.h b/examples/widgets/animation/sub-attaq/boat_p.h
index 265e706d96..e12cbc74bd 100644
--- a/examples/widgets/animation/sub-attaq/boat_p.h
+++ b/examples/widgets/animation/sub-attaq/boat_p.h
@@ -68,7 +68,7 @@ class KeyStopTransition : public QKeyEventTransition
{
public:
KeyStopTransition(Boat *b, QEvent::Type t, int k)
- : QKeyEventTransition(b, t, k), boat(b), key(k)
+ : QKeyEventTransition(b, t, k), boat(b)
{
}
protected:
@@ -80,7 +80,6 @@ protected:
}
private:
Boat * boat;
- int key;
};
//These transtion test if we have to move the boat (i.e current speed was 0 or another value)
diff --git a/examples/widgets/animation/sub-attaq/qanimationstate.h b/examples/widgets/animation/sub-attaq/qanimationstate.h
index 9d733c10ee..68eac43e13 100644
--- a/examples/widgets/animation/sub-attaq/qanimationstate.h
+++ b/examples/widgets/animation/sub-attaq/qanimationstate.h
@@ -50,8 +50,6 @@
# include "qabstractanimation.h"
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -86,6 +84,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QANIMATIONSTATE_H
diff --git a/examples/widgets/animation/sub-attaq/states.cpp b/examples/widgets/animation/sub-attaq/states.cpp
index 8c78ccdd12..e36d13ad07 100644
--- a/examples/widgets/animation/sub-attaq/states.cpp
+++ b/examples/widgets/animation/sub-attaq/states.cpp
@@ -123,7 +123,7 @@ void PlayState::onEntry(QEvent *)
levelState->addTransition(winTransition);
//This state is an animation when the score changed
- UpdateScoreState *scoreState = new UpdateScoreState(this, levelState);
+ UpdateScoreState *scoreState = new UpdateScoreState(levelState);
//This transition update the score when a submarine die
UpdateScoreTransition *scoreTransition = new UpdateScoreTransition(scene, this, levelState);
@@ -275,7 +275,7 @@ void WinState::onExit(QEvent *)
}
/** UpdateScore State */
-UpdateScoreState::UpdateScoreState(PlayState *g, QState *parent) : QState(parent), game(g)
+UpdateScoreState::UpdateScoreState(QState *parent) : QState(parent)
{
}
diff --git a/examples/widgets/animation/sub-attaq/states.h b/examples/widgets/animation/sub-attaq/states.h
index b1730a230d..3cd27be9a4 100644
--- a/examples/widgets/animation/sub-attaq/states.h
+++ b/examples/widgets/animation/sub-attaq/states.h
@@ -70,7 +70,6 @@ private :
QStateMachine *machine;
int currentLevel;
int score;
- QState *parallelChild;
friend class UpdateScoreState;
friend class UpdateScoreTransition;
@@ -103,7 +102,6 @@ protected:
void onExit(QEvent *);
private :
GraphicsScene *scene;
- Boat *boat;
};
class LostState : public QState
@@ -135,10 +133,8 @@ private :
class UpdateScoreState : public QState
{
public:
- UpdateScoreState(PlayState *game, QState *parent);
+ UpdateScoreState(QState *parent);
private:
- QPropertyAnimation *scoreAnimation;
- PlayState *game;
};
//These transtion is used to update the score
@@ -174,7 +170,6 @@ protected:
virtual bool eventTest(QEvent *event);
private:
PlayState *game;
- int key;
};
#endif // STATES_H
diff --git a/examples/widgets/dialogs/classwizard/classwizard.h b/examples/widgets/dialogs/classwizard/classwizard.h
index 751179f81b..34a35a2ce9 100644
--- a/examples/widgets/dialogs/classwizard/classwizard.h
+++ b/examples/widgets/dialogs/classwizard/classwizard.h
@@ -124,7 +124,7 @@ class OutputFilesPage : public QWizardPage
{
Q_OBJECT
-public:
+public:
OutputFilesPage(QWidget *parent = 0);
protected:
diff --git a/examples/widgets/dialogs/classwizard/main.cpp b/examples/widgets/dialogs/classwizard/main.cpp
index 110ada0ed3..4a22dbb212 100644
--- a/examples/widgets/dialogs/classwizard/main.cpp
+++ b/examples/widgets/dialogs/classwizard/main.cpp
@@ -48,7 +48,7 @@
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(classwizard);
-
+
QApplication app(argc, argv);
#ifndef QT_NO_TRANSLATION
diff --git a/examples/widgets/dialogs/dialogs.pro b/examples/widgets/dialogs/dialogs.pro
index c31c37222d..d30c29778f 100644
--- a/examples/widgets/dialogs/dialogs.pro
+++ b/examples/widgets/dialogs/dialogs.pro
@@ -9,5 +9,6 @@ SUBDIRS = classwizard \
extension \
findfiles
+!qtHaveModule(printsupport): SUBDIRS -= licensewizard
contains(DEFINES, QT_NO_WIZARD): SUBDIRS -= trivialwizard licensewizard classwizard
wince*: SUBDIRS += sipdialog
diff --git a/examples/widgets/dialogs/licensewizard/licensewizard.cpp b/examples/widgets/dialogs/licensewizard/licensewizard.cpp
index e6bb506494..8f63583a7c 100644
--- a/examples/widgets/dialogs/licensewizard/licensewizard.cpp
+++ b/examples/widgets/dialogs/licensewizard/licensewizard.cpp
@@ -352,7 +352,7 @@ void ConclusionPage::setVisible(bool visible)
void ConclusionPage::printButtonClicked()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
QPrinter printer;
QPrintDialog dialog(&printer, this);
if (dialog.exec())
diff --git a/examples/widgets/dialogs/sipdialog/dialog.cpp b/examples/widgets/dialogs/sipdialog/dialog.cpp
index b3592f3308..c51feac0a5 100644
--- a/examples/widgets/dialogs/sipdialog/dialog.cpp
+++ b/examples/widgets/dialogs/sipdialog/dialog.cpp
@@ -91,7 +91,7 @@ Dialog::Dialog()
//! [Dialog constructor part5]
connect(button, SIGNAL(clicked()),
qApp, SLOT(closeAllWindows()));
- connect(QApplication::desktop(), SIGNAL(workAreaResized(int)),
+ connect(QApplication::desktop(), SIGNAL(workAreaResized(int)),
this, SLOT(desktopResized(int)));
}
//! [Dialog constructor part5]
diff --git a/examples/widgets/doc/src/addressbook-fr.qdoc b/examples/widgets/doc/src/addressbook-fr.qdoc
index 0d6ff16b57..9a7bc3a6b7 100644
--- a/examples/widgets/doc/src/addressbook-fr.qdoc
+++ b/examples/widgets/doc/src/addressbook-fr.qdoc
@@ -36,7 +36,7 @@
\image addressbook-tutorial-screenshot.png
- Ce tutoriel va nous amener à découvrir quelques technologies fondamentales fournies
+ Ce tutoriel va nous amener à découvrir quelques technologies fondamentales fournies
par Qt, tel que:
\list
@@ -124,7 +124,7 @@
réutilisé dans d'autres projets
\endlist
- Comme Qt ne fournit pas de widget standard pour un carnet d'adresses, nous
+ Comme Qt ne fournit pas de widget standard pour un carnet d'adresses, nous
partirons d'une classe de widget Qt standard et y ajouterons des fonctionnalités.
La classe \c AddressBook crée dans ce tutoriel peut être réutilisée si on a besoin d'un
widget carnet d'adresses basique.
@@ -148,12 +148,12 @@
dans \c nameLine et \c addressText sont nécessaires à de nombreuses méthodes
du carnet d'adresses.
- Il n'est pas nécessaire de déclarer les objets QLabel que nous allons utiliser
+ Il n'est pas nécessaire de déclarer les objets QLabel que nous allons utiliser
puisque nous n'aurons pas besoin d'y faire référence après leur création.
La façon dont Qt gère la parenté des objets est traitée dans la section suivante.
La macro Q_OBJECT implémente des fonctionnalités parmi les plus avancées de Qt.
- Pour le moment, il est bon de voir la macro Q_OBJECT comme un raccourci nous
+ Pour le moment, il est bon de voir la macro Q_OBJECT comme un raccourci nous
permettant d'utiliser les méthodes \l{QObject::}{tr()} et \l{QObject::}{connect()}.
Nous en avons maintenant terminé avec le fichier \c addressbook.h et allons
@@ -295,13 +295,13 @@
Le bouton \c addButton est affiché en invoquant la méthode \l{QPushButton::show()}
{show()}, tandis que \c submitButton et \c cancelButton sont cachés en invoquant
- \l{QPushButton::hide()}{hide()}. Ces deux boutons ne seront affichés que lorsque
+ \l{QPushButton::hide()}{hide()}. Ces deux boutons ne seront affichés que lorsque
l'utilisateur cliquera sur "Add", et ceci est géré par la méthode \c addContact()
décrite plus loin.
\snippet tutorials/addressbook/part2/addressbook.cpp connecting signals and slots
- Nous connectons le signal \l{QPushButton::clicked()}{clicked()} de chaque bouton
+ Nous connectons le signal \l{QPushButton::clicked()}{clicked()} de chaque bouton
au slot qui gèrera l'action.
L'image ci-dessous illustre ceci:
@@ -379,8 +379,8 @@
\snippet tutorials/addressbook/part2/addressbook.cpp cancel
- L'idée générale pour augmenter la flexibilité lors de l'ajout d'un
- contact est de donner la possiblité de cliquer sur "Add"
+ L'idée générale pour augmenter la flexibilité lors de l'ajout d'un
+ contact est de donner la possiblité de cliquer sur "Add"
ou "Cancel" à n'importe quel moment.
L'organigramme ci-dessous reprend l'ensemble des interactions dévelopées
jusqu'ici:
@@ -458,15 +458,15 @@
\c mainLayout.
\image addressbook-tutorial-part3-labeled-layout.png
- Dans notre méthode \c addContact(), nous avons desactivé ces boutons
- pour être sûr que l'utilisateur n'utilise pas la navigation lors de
+ Dans notre méthode \c addContact(), nous avons desactivé ces boutons
+ pour être sûr que l'utilisateur n'utilise pas la navigation lors de
l'ajout d'un contact.
\snippet tutorials/addressbook/part3/addressbook.cpp disabling navigation
Dans notre méthode \c submitContact(), nous activons les boutons de
navigation, \c nextButton et \c previousButton, en fonction de la
- taille de \c contacts. Commen mentionné plus tôt, la navigation n'est
+ taille de \c contacts. Commen mentionné plus tôt, la navigation n'est
activée que si il y a plus d'un contact dans le carnet d'adresses.
Les lignes suivantes montrent comment faire cela:
@@ -475,13 +475,13 @@
Nous incluons aussi ces lignes de code dans le bouton \c cancel().
Souvenez vous que nous voulons émuler une liste-liée ciruculaire à
- l'aide de l'objet QMap, \c contacts. Pour faire cela, nous obtenons un itérateur
+ l'aide de l'objet QMap, \c contacts. Pour faire cela, nous obtenons un itérateur
sur \c contact dans la méthode \c next(), et ensuite:
\list
\li Si l'itérateur n'est pas à la fin de \c contacts, nous l'incrémentons
\li Si l'itérateur est à la fin de \c contacts, nous changeons sa position
- jusqu'au début de \c contacts. Cela donne l'illusion que notre QMap
+ jusqu'au début de \c contacts. Cela donne l'illusion que notre QMap
fonctionne comme une liste circulaire.
\endlist
@@ -490,7 +490,7 @@
Une fois que nous avons itéré jusqu'à l'objet recherché dans \c contacts,
nous affichons son contenu sur \c nameLine et \c addressText.
- De la même façon, pour la méthode \c previous(), nous obtenons un
+ De la même façon, pour la méthode \c previous(), nous obtenons un
itérateur sur \c contacts et ensuite:
\list
@@ -522,7 +522,7 @@
\image addressbook-tutorial-screenshot.png
Nous avons maintenant un carnet d'adresses qui ne se contente pas de
- lister des contacts de façon ordonnée, mais permet également la
+ lister des contacts de façon ordonnée, mais permet également la
navigation. Il serait pratique d'inclure des fonctions telles qu'éditer et
supprimer, afin que les détails associés à un contact puissent être
modifiés lorsque c'est nécessaire. Cependant, cela requiert une légère
@@ -563,7 +563,7 @@
\dots
\snippet tutorials/addressbook/part4/addressbook.h mode declaration
- Enfin, on déclare \c currentMode pour garder une trace du mode
+ Enfin, on déclare \c currentMode pour garder une trace du mode
actuellement utilisé.
\section1 Implémentation de la classe AddressBook
@@ -637,7 +637,7 @@
avant de tester sa valeur.
Chacun des boutons est ensuite activé ou désactivé, en fonction du mode.
- Le code source pour les cas \c AddingMode et \c EditingMode est visible
+ Le code source pour les cas \c AddingMode et \c EditingMode est visible
ci-dessous:
\snippet tutorials/addressbook/part4/addressbook.cpp update interface() part 1
@@ -840,7 +840,7 @@
\section1 Définition de la classe AddressBook
- On déclare deux slots publics, \c saveToFile() et \c loadFromFile(),
+ On déclare deux slots publics, \c saveToFile() et \c loadFromFile(),
ainsi que deux objets QPushButton, \c loadButton et \c saveButton.
\snippet tutorials/addressbook/part6/addressbook.h save and load functions declaration
@@ -863,11 +863,11 @@
\snippet tutorials/addressbook/part6/addressbook.cpp tooltip 2
Bien qu'on ne cite pas le code correspondant ici, nous ajoutons ces deux boutons au
- layout de droite, \c button1Layout, comme pour les fonctionnalités précédentes, et
+ layout de droite, \c button1Layout, comme pour les fonctionnalités précédentes, et
nous connectons leurs signaux
\l{QPushButton::clicked()}{clicked()} à leurs slots respectifs.
- Pour la sauvegarde, on commence par récupérer le nom de fichier
+ Pour la sauvegarde, on commence par récupérer le nom de fichier
\c fileName, en utilisant QFileDialog::getSaveFileName(). C'est une
méthode pratique fournie par QFileDialog, qui ouvre une boîte de
dialogue modale et permet à l'utilisateur d'entrer un nom de fichier ou
@@ -966,7 +966,7 @@
\section1 Définition de la classe AddressBook
Nous ajoutons un objet QPushButton, \c exportButton, et un slot
- public correspondant, \c exportAsVCard(), à notre classe \c AddressBook
+ public correspondant, \c exportAsVCard(), à notre classe \c AddressBook
dans le fichier \c addressbook.h.
\snippet tutorials/addressbook/part7/addressbook.h exportAsVCard() declaration
@@ -1001,7 +1001,7 @@
cela échoue, nous affichons un QMessageBox pour informer l'utilisateur
à propos de l'origine du problème et nous quittons la méthode. Sinon, nous passons le
fichier comme paramètre pour créer un objet QTextStream, \c out. De la même façon que
- QDataStream, la classe QTextStream fournit les fonctionnalités pour
+ QDataStream, la classe QTextStream fournit les fonctionnalités pour
lire et écrire des fichiers de texte. Grâce à celà, le fichier \c{.vcf}
généré pourra être ouvert et édité à l'aide d'un simple éditeur de texte.
@@ -1014,7 +1014,7 @@
à un nom de famille défini ou non. Si oui, nous utilions les détails de
\c nameList pour remplir le champ, dans le cas contraire on écrit uniquement le contenu
de \c firstName.
-
+
\snippet tutorials/addressbook/part7/addressbook.cpp export function part3
Nous continuons en écrivant l'adresse du contact. Les points-virgules
@@ -1026,7 +1026,7 @@
\snippet tutorials/addressbook/part7/addressbook.cpp export function part4
À la fin de la méthode, un QMessageBox est affiché pour informer l'utilisateur
- que la vCard a été exportée avec succès.
+ que la vCard a été exportée avec succès.
\e{vCard est une marque déposée de \l{http://www.imc.org}
{Internet Mail Consortium}}.
diff --git a/examples/widgets/doc/src/addressbook-tutorial.qdoc b/examples/widgets/doc/src/addressbook-tutorial.qdoc
index db3d785616..089ab2319d 100644
--- a/examples/widgets/doc/src/addressbook-tutorial.qdoc
+++ b/examples/widgets/doc/src/addressbook-tutorial.qdoc
@@ -73,7 +73,7 @@
have worked through this tutorial, we recommend reading the
\l{mainwindows/application}{Application} example, which presents a
small GUI application, with menus, toolbars, a status bar, and so
- on.
+ on.
*/
/*!
@@ -199,7 +199,7 @@
Notice that \c addressLabel is positioned using Qt::AlignTop as an
additional argument. This is to make sure it is not vertically centered in
- cell (1,0). For a basic overview on Qt Layouts, refer to the
+ cell (1,0). For a basic overview on Qt Layouts, refer to the
\l{Layout Management} documentation.
In order to install the layout object onto the widget, we have to invoke
@@ -431,7 +431,7 @@
\snippet tutorials/addressbook/part3/addressbook.cpp connecting navigation signals
- The image below is the expected graphical user interface.
+ The image below is the expected graphical user interface.
\image addressbook-tutorial-part3-screenshot.png
diff --git a/examples/widgets/doc/src/addressbook.qdoc b/examples/widgets/doc/src/addressbook.qdoc
index ea0cb46830..becff14f3f 100644
--- a/examples/widgets/doc/src/addressbook.qdoc
+++ b/examples/widgets/doc/src/addressbook.qdoc
@@ -273,7 +273,7 @@
\snippet itemviews/addressbook/addresswidget.cpp 4a
- Next we extract data from the row the user intends to
+ Next we extract data from the row the user intends to
edit. This data is displayed in an instance of \c AddDialog
with a different window title. The \c table is only
updated if changes have been made to data in \c aDialog.
diff --git a/examples/widgets/doc/src/codeeditor.qdoc b/examples/widgets/doc/src/codeeditor.qdoc
index 2848908233..3db55eddc5 100644
--- a/examples/widgets/doc/src/codeeditor.qdoc
+++ b/examples/widgets/doc/src/codeeditor.qdoc
@@ -60,7 +60,7 @@
We will now move on to the definitions and implementations of \c
CodeEditor and \c LineNumberArea. Let's start with the \c
- LineNumberArea class.
+ LineNumberArea class.
\section1 The LineNumberArea Class
@@ -130,7 +130,7 @@
\snippet widgets/codeeditor/codeeditor.cpp resizeEvent
When the size of the editor changes, we also need to resize the
- line number area.
+ line number area.
\snippet widgets/codeeditor/codeeditor.cpp cursorPositionChanged
@@ -155,7 +155,7 @@
The \c lineNumberAreaPaintEvent() is called from \c LineNumberArea
whenever it receives a paint event. We start off by painting the
- widget's background.
+ widget's background.
\snippet widgets/codeeditor/codeeditor.cpp extraAreaPaintEvent_1
@@ -163,11 +163,11 @@
numbers in the extra area for each line. Notice that in a plain
text edit each line will consist of one QTextBlock; though, if
line wrapping is enabled, a line may span several rows in the text
- edit's viewport.
+ edit's viewport.
We get the top and bottom y-coordinate of the first text block,
and adjust these values by the height of the current text block in
- each iteration in the loop.
+ each iteration in the loop.
\snippet widgets/codeeditor/codeeditor.cpp extraAreaPaintEvent_2
@@ -183,7 +183,7 @@
In addition to line numbers, you can add more to the extra area,
for instance, break points.
-
+
QSyntaxHighlighter gives the possibility to add user data to each
text block with
\l{QSyntaxHighlighter::}{setCurrentBlockUserData()}. This can be
diff --git a/examples/widgets/doc/src/coloreditorfactory.qdoc b/examples/widgets/doc/src/coloreditorfactory.qdoc
index 6728d88252..ad4a37492e 100644
--- a/examples/widgets/doc/src/coloreditorfactory.qdoc
+++ b/examples/widgets/doc/src/coloreditorfactory.qdoc
@@ -78,7 +78,7 @@
After the new factory has been set, all standard item delegates
will use it (i.e, also delegates that were created before the new
- default factory was set).
+ default factory was set).
The \c createGUI() function sets up the table and fills it
with data.
@@ -135,17 +135,17 @@
\list
\li If the editor widget has no user property defined, the delegate
- asks the factory for the property name, which it in turn
- asks the item editor creator for. In this case, you can use
- the QItemEditorCreator class, which takes the property
- name to use for editing as a constructor argument.
+ asks the factory for the property name, which it in turn
+ asks the item editor creator for. In this case, you can use
+ the QItemEditorCreator class, which takes the property
+ name to use for editing as a constructor argument.
\li If the editor requires other constructors or other
- initialization than provided by QItemEditorCreatorBase, you
- must reimplement
- QItemEditorCreatorBase::createWidget().
+ initialization than provided by QItemEditorCreatorBase, you
+ must reimplement
+ QItemEditorCreatorBase::createWidget().
\li You could also subclass QItemEditorFactory if you only want
- to provide editors for certain kinds of data or use another
- method of creating the editors than using creator bases.
+ to provide editors for certain kinds of data or use another
+ method of creating the editors than using creator bases.
\endlist
In this example, we use a standard QVariant data type. You can
diff --git a/examples/widgets/doc/src/diagramscene.qdoc b/examples/widgets/doc/src/diagramscene.qdoc
index f05ad42130..92048cdcaf 100644
--- a/examples/widgets/doc/src/diagramscene.qdoc
+++ b/examples/widgets/doc/src/diagramscene.qdoc
@@ -50,7 +50,7 @@
In this example we show how to create such custom graphics
scenes and items by implementing classes that inherit
- QGraphicsScene and QGraphicsItem.
+ QGraphicsScene and QGraphicsItem.
In particular we show how to:
@@ -65,21 +65,21 @@
The example consists of the following classes:
\list
\li \c MainWindow creates the widgets and display
- them in a QMainWindow. It also manages the interaction
- between the widgets and the graphics scene, view and
- items.
+ them in a QMainWindow. It also manages the interaction
+ between the widgets and the graphics scene, view and
+ items.
\li \c DiagramItem inherits QGraphicsPolygonItem and
- represents a flowchart shape.
+ represents a flowchart shape.
\li \c TextDiagramItem inherits QGraphicsTextItem and
- represents text items in the diagram. The class adds
- support for moving the item with the mouse, which is not
- supported by QGraphicsTextItem.
+ represents text items in the diagram. The class adds
+ support for moving the item with the mouse, which is not
+ supported by QGraphicsTextItem.
\li \c Arrow inherits QGraphicsLineItem and is an arrow
- that connect two DiagramItems.
+ that connect two DiagramItems.
\li \c DiagramScene inherits QGraphicsDiagramScene and
- provides support for \c DiagramItem, \c Arrow and
- \c DiagramTextItem (In addition to the support already
- handled by QGraphicsScene).
+ provides support for \c DiagramItem, \c Arrow and
+ \c DiagramTextItem (In addition to the support already
+ handled by QGraphicsScene).
\endlist
\section1 MainWindow Class Definition
@@ -88,7 +88,7 @@
The \c MainWindow class creates and lays out the widgets in a
QMainWindow. The class forwards input from the widgets to the
- DiagramScene. It also updates its widgets when the diagram
+ DiagramScene. It also updates its widgets when the diagram
scene's text item changes, or a diagram item or a diagram text item
is inserted into the scene.
@@ -104,8 +104,8 @@
\snippet graphicsview/diagramscene/mainwindow.cpp 0
In the constructor we call methods to create the widgets and
- layouts of the example before we create the diagram scene.
- The toolbars must be created after the scene as they connect
+ layouts of the example before we create the diagram scene.
+ The toolbars must be created after the scene as they connect
to its signals. We then lay the widgets out in the window.
We connect to the \c itemInserted() and \c textInserted() slots of
@@ -115,20 +115,20 @@
update the widgets that display font properties if the item
selected is a \c DiagramTextItem.
- The \c createToolBox() function creates and lays out the widgets
+ The \c createToolBox() function creates and lays out the widgets
of the \c toolBox QToolBox. We will not examine it with a
- high level of detail as it does not deal with graphics framework
+ high level of detail as it does not deal with graphics framework
specific functionality. Here is its implementation:
\snippet graphicsview/diagramscene/mainwindow.cpp 21
-
+
This part of the function sets up the tabbed widget item that
- contains the flowchart shapes. An exclusive QButtonGroup always
+ contains the flowchart shapes. An exclusive QButtonGroup always
keeps one button checked; we want the group to allow all buttons
to be unchecked.
We still use a button group since we can associate user
- data, which we use to store the diagram type, with each button.
- The \c createCellWidget() function sets up the buttons in the
+ data, which we use to store the diagram type, with each button.
+ The \c createCellWidget() function sets up the buttons in the
tabbed widget item and is examined later.
The buttons of the background tabbed widget item is set up in the
@@ -137,7 +137,7 @@
\snippet graphicsview/diagramscene/mainwindow.cpp 22
We set the preferred size of the toolbox as its maximum. This
- way, more space is given to the graphics view.
+ way, more space is given to the graphics view.
Here is the \c createActions() function:
@@ -202,7 +202,7 @@
with this function is used in the tool box.
Here is the \c createColorMenu() function:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 30
This function creates a color menu that is used as the
@@ -224,7 +224,7 @@
\snippet graphicsview/diagramscene/mainwindow.cpp 32
- This function creates an icon with a filled rectangle in the
+ This function creates an icon with a filled rectangle in the
color of \a color. It is used for creating icons for the color
menus in the \c fillColorToolButton, \c fontColorToolButton, and
\c lineColorToolButton.
@@ -240,8 +240,8 @@
with.
When one of the buttons in the background tabbed widget item is
- clicked we change the brush; we find out which button it is by
- checking its text.
+ clicked we change the brush; we find out which button it is by
+ checking its text.
Here is the implementation of \c buttonGroupClicked():
@@ -255,37 +255,37 @@
checked at a time.
\c QButtonGroup assigns an id to each button. We have set the id
- of each button to the diagram type, as given by DiagramItem::DiagramType
- that will be inserted into the scene when it is clicked. We can
- then use the button id when we set the diagram type with
+ of each button to the diagram type, as given by DiagramItem::DiagramType
+ that will be inserted into the scene when it is clicked. We can
+ then use the button id when we set the diagram type with
\c setItemType(). In the case of text we assigned an id that has a
value that is not in the DiagramType enum.
-
+
Here is the implementation of \c deleteItem():
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 3
-
+
This slot deletes the selected item, if any, from the scene. It
deletes the arrows first in order to avoid to delete them twice. If
the item to be deleted is a \c DiagramItem, we also need to delete
arrows connected to it; we don't want arrows in the scene that
aren't connected to items in both ends.
-
+
This is the implementation of pointerGroupClicked():
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 4
-
+
The \c pointerTypeGroup decides whether the scene is in ItemMove
- or InsertLine mode. This button group is exclusive, i.e., only
+ or InsertLine mode. This button group is exclusive, i.e., only
one button is checked at any time. As with the \c buttonGroup above
we have assigned an id to the buttons that matches values of the
DiagramScene::Mode enum, so that we can use the id to set the
correct mode.
-
+
Here is the \c bringToFront() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 5
-
+
Several items may collide, i.e., overlap, with each other in
the scene. This slot is called when the user requests that an
item should be placed on top of the items it collides with.
@@ -296,169 +296,169 @@
lower values. When we bring an item to the front we can loop
through the items it collides with and set a z-value that is
higher than all of them.
-
+
Here is the \c sendToBack() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 6
-
+
This slot works in the same way as \c bringToFront() described
above, but sets a z-value that is lower than items the item that
should be send to the back collides with.
-
+
This is the implementation of \c itemInserted():
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 7
-
+
This slot is called from the \c DiagramScene when an item has been
added to the scene. We set the mode of the scene back to the mode
before the item was inserted, which is ItemMove or InsertText
- depending on which button is checked in the \c pointerTypeGroup.
+ depending on which button is checked in the \c pointerTypeGroup.
We must also uncheck the button in the in the \c buttonGroup.
-
+
Here is the implementation of \c textInserted():
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 8
-
+
We simply set the mode of the scene back to the mode it had before
the text was inserted.
-
+
Here is the \c currentFontChanged() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 9
-
+
When the user requests a font change, by using one of the
widgets in the \c fontToolBar, we create a new QFont object and
set its properties to match the state of the widgets. This is done
in \c handleFontChange(), so we simply call that slot.
-
+
Here is the \c fontSizeChanged() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 10
-
+
When the user requests a font change, by using one of the
widgets in the \c fontToolBar, we create a new QFont object and
set its properties to match the state of the widgets. This is done
in \c handleFontChange(), so we simply call that slot.
-
+
Here is the implementation of \c sceneScaleChanged():
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 11
-
+
The user can increase or decrease the scale, with the \c
sceneScaleCombo, the scene is drawn in.
It is not the scene itself that changes its scale, but only the
- view.
-
+ view.
+
Here is the \c textColorChanged() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 12
-
+
This slot is called when an item in the drop-down menu of the \c
- fontColorToolButton is pressed. We need to change the icon on
+ fontColorToolButton is pressed. We need to change the icon on
the button to the color of the selected QAction. We keep a pointer
to the selected action in \c textAction. It is in \c
textButtonTriggered() we change the text color to the color of \c
textAction, so we call that slot.
-
+
Here is the \c itemColorChanged() implementation:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 13
-
+
This slot handles requests for changing the color of \c
DiagramItems in the same manner as \c textColorChanged() does for
\c DiagramTextItems.
-
+
Here is the implementation of \c lineColorChanged():
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 14
-
+
This slot handles requests for changing the color of \c Arrows in
the same manner that \c textColorChanged() does it for \c
DiagramTextItems.
-
+
Here is the \c textButtonTriggered() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 15
-
+
\c textAction points to the QAction of the currently selected menu item
in the \c fontColorToolButton's color drop-down menu. We have set
the data of the action to the QColor the action represents, so we
can simply fetch this when we set the color of text with \c
setTextColor().
-
+
Here is the \c fillButtonTriggered() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 16
-
+
\c fillAction points to the selected menu item in the drop-down
menu of \c fillColorToolButton(). We can therefore use the data of
this action when we set the item color with \c setItemColor().
-
+
Here is the \c lineButtonTriggered() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 17
-
+
\c lineAction point to the selected item in the drop-down menu of
- \c lineColorToolButton. We use its data when we set the arrow
+ \c lineColorToolButton. We use its data when we set the arrow
color with \c setLineColor().
-
+
Here is the \c handleFontChange() function:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 18
-
+
\c handleFontChange() is called when any of the widgets that show
font properties changes. We create a new QFont object and set its
properties based on the widgets. We then call the \c setFont()
function of \c DiagramScene; it is the scene that set the font of
the \c DiagramTextItems it manages.
-
+
Here is the \c itemSelected() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 19
-
+
This slot is called when an item in the \c DiagramScene is
selected. In the case of this example it is only text items that
emit signals when they are selected, so we do not need to check
what kind of graphics \a item is.
-
+
We set the state of the widgets to match the properties of the
font of the selected text item.
-
+
This is the \c about() slot:
-
+
\snippet graphicsview/diagramscene/mainwindow.cpp 20
-
+
This slot displays an about box for the example when the user
selects the about menu item from the help menu.
-
+
\section1 DiagramScene Class Definition
-
+
The \c DiagramScene class inherits QGraphicsScene and adds
functionality to handle \c DiagramItems, \c Arrows, and \c
DiagramTextItems in addition to the items handled by its super
class.
-
-
+
+
\snippet graphicsview/diagramscene/diagramscene.h 0
-
+
In the \c DiagramScene a mouse click can give three different
actions: the item under the mouse can be moved, an item may be
inserted, or an arrow may be connected between to diagram items.
Which action a mouse click has depends on the mode, given by the
Mode enum, the scene is in. The mode is set with the \c setMode()
function.
-
+
The scene also sets the color of its items and the font of its
text items. The colors and font used by the scene can be set with
the \c setLineColor(), \c setTextColor(), \c setItemColor() and \c
setFont() functions. The type of \c DiagramItem, given by the
DiagramItem::DiagramType function, to be created when an item is
inserted is set with the \c setItemType() slot.
-
+
The \c MainWindow and \c DiagramScene share responsibility for
the examples functionality. \c MainWindow handles the following
tasks: the deletion of items, text, and arrows; moving diagram
- items to the back and front; and setting the scale of the scene.
+ items to the back and front; and setting the scale of the scene.
\section1 DiagramScene Class Implementation
@@ -492,12 +492,12 @@
\snippet graphicsview/diagramscene/diagramscene.cpp 3
- This function sets the color the scene will use when creating
+ This function sets the color the scene will use when creating
\c DiagramItems. It also changes the color of a selected \c
DiagramItem.
This is the implementation of \c setFont():
-
+
\snippet graphicsview/diagramscene/diagramscene.cpp 4
Set the font to use for new and selected, if a text item is
@@ -511,15 +511,15 @@
connected to this slot. We remove the item if it has no text.
If not, we would leak memory and confuse the user as the items
will be edited when pressed on by the mouse.
-
+
The \c mousePressEvent() function handles mouse press event's
different depending on which mode the \c DiagramScene is in. We
examine its implementation for each mode:
-
+
\snippet graphicsview/diagramscene/diagramscene.cpp 6
We simply create a new \c DiagramItem and add it to the scene at
- the position the mouse was pressed. Note that the origin of its
+ the position the mouse was pressed. Note that the origin of its
local coordinate system will be under the mouse pointer position.
\snippet graphicsview/diagramscene/diagramscene.cpp 7
@@ -534,7 +534,7 @@
line.
\snippet graphicsview/diagramscene/diagramscene.cpp 8
-
+
The \c DiagramTextItem is editable when the
Qt::TextEditorInteraction flag is set, else it is movable by the
mouse. We always want the text to be drawn on top of the other
@@ -547,12 +547,12 @@
can then call the QGraphicsScene implementation, which
handles movement of items with the mouse. We make this call even
if we are in another mode making it possible to add an item and
- then keep the mouse button pressed down and start moving
+ then keep the mouse button pressed down and start moving
the item. In the case of text items, this is not possible as they
do not propagate mouse events when they are editable.
This is the \c mouseMoveEvent() function:
-
+
\snippet graphicsview/diagramscene/diagramscene.cpp 10
We must draw the line if we are in InsertMode and the mouse button
@@ -567,7 +567,7 @@
should be added to the scene:
\snippet graphicsview/diagramscene/diagramscene.cpp 11
-
+
First we need to get the items (if any) under the line's start
and end points. The line itself is the first item at these points,
so we remove it from the lists. As a precaution, we check if the
@@ -603,7 +603,7 @@
DiagramScene. It inherits QGraphicsPolygonItem and has a polygon
for each shape. The enum DiagramType has a value for each of the
flowchart shapes.
-
+
The class has a list of the arrows that are connected to it.
This is necessary because only the item knows when it is being
moved (with the \c itemChanged() function) at which time the
@@ -612,7 +612,7 @@
buttons in \c MainWindow, see \c createColorToolButtonIcon() in
\c MainWindow.
- The Type enum is a unique identifier of the class. It is used by
+ The Type enum is a unique identifier of the class. It is used by
\c qgraphicsitem_cast(), which does dynamic casts of graphics
items. The UserType constant is the minimum value a custom
graphics item type can be.
@@ -646,7 +646,7 @@
item.
Here is the \c addArrow() function:
-
+
\snippet graphicsview/diagramscene/diagramitem.cpp 3
This function simply adds the \a arrow to the items \c arrows list.
@@ -695,7 +695,7 @@
possible to alter the mouse behavior of QGraphicsTextItem.
\section1 DiagramTextItem Implementation
-
+
We start with the constructor:
\snippet graphicsview/diagramscene/diagramtextitem.cpp 0
@@ -717,7 +717,7 @@
\c DiagramScene uses the signal emitted when the text item looses
focus to remove the item if it is empty, i.e., it contains no
- text.
+ text.
This is the implementation of \c mouseDoubleClickEvent():
@@ -740,7 +740,7 @@
The item's color can be set with \c setColor().
- \c boundingRect() and \c shape() are reimplemented
+ \c boundingRect() and \c shape() are reimplemented
from QGraphicsLineItem and are used by the scene
to check for collisions and selections.
@@ -769,7 +769,7 @@
We need to reimplement this function because the arrow is
larger than the bounding rectangle of the QGraphicsLineItem. The
graphics scene uses the bounding rectangle to know which regions
- of the scene to update.
+ of the scene to update.
Here is the \c shape() function:
@@ -779,14 +779,14 @@
shape of the item. The QGraphicsLineItem::shape() returns a path
with a line drawn with the current pen, so we only need to add
the arrow head. This function is used to check for collisions and
- selections with the mouse.
+ selections with the mouse.
Here is the \c updatePosition() slot:
\snippet graphicsview/diagramscene/arrow.cpp 3
This slot updates the arrow by setting the start and end
- points of its line to the center of the items it connects.
+ points of its line to the center of the items it connects.
Here is the \c paint() function:
@@ -809,7 +809,7 @@
one of the lines of the polygon. Note that the points in the
polygon are relative to the local coordinate system of the item.
We must therefore add the position of the end item to make the
- coordinates relative to the scene.
+ coordinates relative to the scene.
\snippet graphicsview/diagramscene/arrow.cpp 6
diff --git a/examples/widgets/doc/src/dockwidgets.qdoc b/examples/widgets/doc/src/dockwidgets.qdoc
index 7f08572a30..2987ec1211 100644
--- a/examples/widgets/doc/src/dockwidgets.qdoc
+++ b/examples/widgets/doc/src/dockwidgets.qdoc
@@ -133,7 +133,7 @@
that the entire name and address insertion is treated as a single
operation by the QTextEdit, so a single undo will revert all the
insertions.
-
+
\snippet mainwindows/dockwidgets/mainwindow.cpp 7
This function works in a similar way to \c insertCustomer(). First
@@ -141,7 +141,7 @@
replace it with the standard paragraph that the user clicked. Again
we use a \c beginEditBlock() ... \c endEditBlock() pair so that the
insertion can be undone as a single operation.
-
+
\snippet mainwindows/dockwidgets/mainwindow.cpp 3
Qt's QTextDocument class makes printing documents easy. We simply
diff --git a/examples/widgets/doc/src/easing.qdoc b/examples/widgets/doc/src/easing.qdoc
index 392cb4e826..1b5f0c8077 100644
--- a/examples/widgets/doc/src/easing.qdoc
+++ b/examples/widgets/doc/src/easing.qdoc
@@ -31,7 +31,7 @@
\brief The Easing Curves example shows how to use easing curves to
control the speed of an animation.
-
+
\image easing-example.png
*/
diff --git a/examples/widgets/doc/src/echoplugin.qdoc b/examples/widgets/doc/src/echoplugin.qdoc
index eae5269d62..7b7aa9b868 100644
--- a/examples/widgets/doc/src/echoplugin.qdoc
+++ b/examples/widgets/doc/src/echoplugin.qdoc
@@ -46,7 +46,7 @@
System}{meta-object system}. The plugin \l{How to Create Qt
Plugins}{overview document} gives a high-level introduction to
plugins.
-
+
We have implemented a plugin, the \c EchoPlugin, which implements
the \c EchoInterface. The interface consists of \c echo(), which
takes a QString as argument. The \c EchoPlugin returns the string
@@ -68,8 +68,8 @@
\snippet tools/echoplugin/echowindow/echowindow.h 0
We load the plugin in \c loadPlugin() and cast it to \c
- EchoInterface. When the user clicks the \c button we take the
- text in \c lineEdit and call the interface's \c echo() with it.
+ EchoInterface. When the user clicks the \c button we take the
+ text in \c lineEdit and call the interface's \c echo() with it.
\section1 EchoWindow Class Implementation
@@ -136,15 +136,15 @@
System}{Qt's meta object system} aware of the interface. We do
this so that it will be possible to identify plugins that
implements the interface at run-time. The second argument is a
- string that must identify the interface in a unique way.
+ string that must identify the interface in a unique way.
\section1 EchoPlugin Class Definition
We inherit both QObject and \c EchoInterface to make this class a
plugin. The Q_INTERFACES macro tells Qt which interfaces the class
- implements. In our case we only implement the \c EchoInterface.
- If a class implements more than one interface, they are given as
+ implements. In our case we only implement the \c EchoInterface.
+ If a class implements more than one interface, they are given as
a comma separated list. The Q_PLUGIN_METADATA macro is included next
to the Q_OBJECT macro. It contains the plugins IID and a filename
pointing to a json file containing the metadata for the plugin.
@@ -158,7 +158,7 @@
\snippet tools/echoplugin/plugin/echoplugin.cpp 0
- We simply return the functions parameter.
+ We simply return the functions parameter.
\section1 The \c main() function
@@ -169,7 +169,7 @@
\section1 The Profiles
When creating plugins the profiles need to be adjusted.
- We show here what changes need to be done.
+ We show here what changes need to be done.
The profile in the echoplugin directory uses the \c subdirs
template and simply includes includes to directories in which
@@ -196,7 +196,7 @@
You can find an overview of the macros needed to create plugins
\l{Macros for Defining Plugins}{here}.
-
+
We give an example of a plugin that extend Qt in the \l{Style
Plugin Example}{style plugin} example. The \l{Plug & Paint
Example}{plug and paint} example shows how to create static
diff --git a/examples/widgets/doc/src/fetchmore.qdoc b/examples/widgets/doc/src/fetchmore.qdoc
index 2f32a5d43d..1b1e87e06b 100644
--- a/examples/widgets/doc/src/fetchmore.qdoc
+++ b/examples/widgets/doc/src/fetchmore.qdoc
@@ -62,7 +62,7 @@
\l{QAbstractItemModel::}{fetchMore()} and
\l{QAbstractItemModel::}{canFetchMore()} from QAbstractItemModel.
These functions are called by the item view when it needs more
- items.
+ items.
The \c setDirPath() function sets the directory the model will
work on. We emit \c numberPopulated() each time we add a batch of
diff --git a/examples/widgets/doc/src/flowlayout.qdoc b/examples/widgets/doc/src/flowlayout.qdoc
index f7f5496d07..b482edf946 100644
--- a/examples/widgets/doc/src/flowlayout.qdoc
+++ b/examples/widgets/doc/src/flowlayout.qdoc
@@ -35,27 +35,27 @@
\image flowlayout-example.png Screenshot of the Flow Layout example
The items are first laid out horizontally and then vertically when each line
- in the layout runs out of space.
+ in the layout runs out of space.
- The Flowlayout class mainly uses QLayout and QWidgetItem, while the
- Window uses QWidget and QLabel. We will only document the definition
- and implementation of \c FlowLayout below.
+ The Flowlayout class mainly uses QLayout and QWidgetItem, while the
+ Window uses QWidget and QLabel. We will only document the definition
+ and implementation of \c FlowLayout below.
\section1 FlowLayout Class Definition
-
- The \c FlowLayout class inherits QLayout. It is a custom layout class
- that arranges its child widgets horizontally and vertically.
+
+ The \c FlowLayout class inherits QLayout. It is a custom layout class
+ that arranges its child widgets horizontally and vertically.
\snippet layouts/flowlayout/flowlayout.h 0
We reimplement functions inherited from QLayout. These functions add items to
- the layout and handle their orientation and geometry.
-
+ the layout and handle their orientation and geometry.
+
We also declare two private methods, \c doLayout() and \c smartSpacing().
\c doLayout() lays out the layout items, while the \c
smartSpacing() function calculates the spacing between them.
- \section1 FlowLayout Class Implementation
+ \section1 FlowLayout Class Implementation
We start off by looking at the constructor:
@@ -63,32 +63,32 @@
In the constructor we call \c setContentsMargins() to set the left, top,
right and bottom margin. By default, QLayout uses values provided by
- the current style (see QStyle::PixelMetric).
+ the current style (see QStyle::PixelMetric).
\snippet layouts/flowlayout/flowlayout.cpp 2
- In this example we reimplement \c addItem(), which is a pure virtual
- function. When using \c addItem() the ownership of the layout items is
- transferred to the layout, and it is therefore the layout's
- responsibility to delete them.
-
+ In this example we reimplement \c addItem(), which is a pure virtual
+ function. When using \c addItem() the ownership of the layout items is
+ transferred to the layout, and it is therefore the layout's
+ responsibility to delete them.
+
\snippet layouts/flowlayout/flowlayout.cpp 3
-
- \c addItem() is implemented to add items to the layout.
+
+ \c addItem() is implemented to add items to the layout.
\snippet layouts/flowlayout/flowlayout.cpp 4
We implement \c horizontalSpacing() and \c verticalSpacing() to get
- hold of the spacing between the widgets inside the layout. If the value
- is less than or equal to 0, this value will be used. If not,
+ hold of the spacing between the widgets inside the layout. If the value
+ is less than or equal to 0, this value will be used. If not,
\c smartSpacing() will be called to calculate the spacing.
\snippet layouts/flowlayout/flowlayout.cpp 5
-
- We then implement \c count() to return the number of items in the
- layout. To navigate the list of items we use \c itemAt() and
- takeAt() to remove and return items from the list. If an item is
- removed, the remaining items will be renumbered. All three
+
+ We then implement \c count() to return the number of items in the
+ layout. To navigate the list of items we use \c itemAt() and
+ takeAt() to remove and return items from the list. If an item is
+ removed, the remaining items will be renumbered. All three
functions are pure virtual functions from QLayout.
\snippet layouts/flowlayout/flowlayout.cpp 6
@@ -103,7 +103,7 @@
dependency, and \c heightForWidth() passes the width on to \c doLayout() which
in turn uses the width as an argument for the layout rect, i.e., the bounds in
which the items are laid out. This rect does not include the layout margin().
-
+
\snippet layouts/flowlayout/flowlayout.cpp 8
\c setGeometry() is normally used to do the actual layout, i.e., calculate
@@ -116,30 +116,30 @@
\snippet layouts/flowlayout/flowlayout.cpp 9
\c doLayout() handles the layout if \c horizontalSpacing() or \c
- verticalSpacing() don't return the default value. It uses
- \c getContentsMargins() to calculate the area available to the
- layout items.
-
+ verticalSpacing() don't return the default value. It uses
+ \c getContentsMargins() to calculate the area available to the
+ layout items.
+
\snippet layouts/flowlayout/flowlayout.cpp 10
- It then sets the proper amount of spacing for each widget in the
- layout, based on the current style.
-
+ It then sets the proper amount of spacing for each widget in the
+ layout, based on the current style.
+
\snippet layouts/flowlayout/flowlayout.cpp 11
- The position of each item in the layout is then calculated by
- adding the items width and the line height to the initial x and y
- coordinates. This in turn lets us find out whether the next item
- will fit on the current line or if it must be moved down to the next.
- We also find the height of the current line based on the widgets height.
-
+ The position of each item in the layout is then calculated by
+ adding the items width and the line height to the initial x and y
+ coordinates. This in turn lets us find out whether the next item
+ will fit on the current line or if it must be moved down to the next.
+ We also find the height of the current line based on the widgets height.
+
\snippet layouts/flowlayout/flowlayout.cpp 12
- \c smartSpacing() is designed to get the default spacing for either
- the top-level layouts or the sublayouts. The default spacing for
- top-level layouts, when the parent is a QWidget, will be determined
- by querying the style. The default spacing for sublayouts, when
- the parent is a QLayout, will be determined by querying the spacing
- of the parent layout.
+ \c smartSpacing() is designed to get the default spacing for either
+ the top-level layouts or the sublayouts. The default spacing for
+ top-level layouts, when the parent is a QWidget, will be determined
+ by querying the style. The default spacing for sublayouts, when
+ the parent is a QLayout, will be determined by querying the spacing
+ of the parent layout.
*/
diff --git a/examples/widgets/doc/src/fontsampler.qdoc b/examples/widgets/doc/src/fontsampler.qdoc
index b833390def..8a2678e2f8 100644
--- a/examples/widgets/doc/src/fontsampler.qdoc
+++ b/examples/widgets/doc/src/fontsampler.qdoc
@@ -30,7 +30,7 @@
\title Font Sampler Example
\ingroup examples-painting
\brief The Font Sampler example shows how to preview and print multi-page documents.
-
+
The Font Sampler example shows how to preview and print multi-page documents.
\image fontsampler-example.png
diff --git a/examples/widgets/doc/src/fridgemagnets.qdoc b/examples/widgets/doc/src/fridgemagnets.qdoc
index 5db2cd586c..abaeb2c52a 100644
--- a/examples/widgets/doc/src/fridgemagnets.qdoc
+++ b/examples/widgets/doc/src/fridgemagnets.qdoc
@@ -230,7 +230,7 @@
top-level corner of the drag pixmap, to be the point we calculated
above. This makes the process of dragging the label feel more natural
because the cursor always points to the same place on the label
- during the drag operation.
+ during the drag operation.
We start the drag operation using QDrag's \l{QDrag::}{exec()} function,
requesting that the magnet is copied when the drag is completed.
diff --git a/examples/widgets/doc/src/i18n.qdoc b/examples/widgets/doc/src/i18n.qdoc
index 69b458c882..068995fc90 100644
--- a/examples/widgets/doc/src/i18n.qdoc
+++ b/examples/widgets/doc/src/i18n.qdoc
@@ -32,7 +32,9 @@
\brief The Internationalization (I18N) example demonstrates Qt's support for translated
text. Developers can write the initial application text in one language, and
- translations can be provided later without any modifications to the code.
+ translations can be provided later without any modifications to the code. It also
+ demonstrates how to detect the system language settings and show the UI in the appropriate
+ language.
\image i18n-example.png
*/
diff --git a/examples/widgets/doc/src/mdi.qdoc b/examples/widgets/doc/src/mdi.qdoc
index b35975d50c..c3f74f7a9f 100644
--- a/examples/widgets/doc/src/mdi.qdoc
+++ b/examples/widgets/doc/src/mdi.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example mainwindows/mdi
\title MDI Example
\ingroup examples-mainwindow
diff --git a/examples/widgets/doc/src/moveblocks.qdoc b/examples/widgets/doc/src/moveblocks.qdoc
index c9eecc9769..b41b16519d 100644
--- a/examples/widgets/doc/src/moveblocks.qdoc
+++ b/examples/widgets/doc/src/moveblocks.qdoc
@@ -43,7 +43,7 @@
\li \c StateSwitcher inherits QState and can add
\c {StateSwitchTransition}s to other states.
When entered, it will randomly transition to one of these
- states.
+ states.
\li \c StateSwitchTransition is a custom transition that
triggers on \c{StateSwitchEvent}s.
\li \c StateSwitchEvent is a QEvent that triggers \c{StateSwitchTransition}s.
@@ -152,7 +152,7 @@
\c StateSwitcher is a state designed for a particular purpose and
will always be a top-level state. We use \c m_stateCount to keep
track of how many states we are managing, and \c m_lastIndex to
- remember which state was the last state to which we transitioned.
+ remember which state was the last state to which we transitioned.
\snippet animation/moveblocks/main.cpp 11
diff --git a/examples/widgets/doc/src/pixelator.qdoc b/examples/widgets/doc/src/pixelator.qdoc
index 1e9af00361..c8b04bb4bc 100644
--- a/examples/widgets/doc/src/pixelator.qdoc
+++ b/examples/widgets/doc/src/pixelator.qdoc
@@ -216,7 +216,7 @@
This enables the items to be drawn without any gaps between them. Removing
the headers also prevents the user from adjusting the sizes of individual
- rows and columns.
+ rows and columns.
We also set the minimum section size to 1 on the headers. If we
didn't, the headers would default to a larger size, preventing
diff --git a/examples/widgets/doc/src/recentfiles.qdoc b/examples/widgets/doc/src/recentfiles.qdoc
index 939ef8b939..58f28b2832 100644
--- a/examples/widgets/doc/src/recentfiles.qdoc
+++ b/examples/widgets/doc/src/recentfiles.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example mainwindows/recentfiles
\title Recent Files Example
\ingroup examples-mainwindow
diff --git a/examples/widgets/doc/src/regexp.qdoc b/examples/widgets/doc/src/regexp.qdoc
index 9dc3878c10..0523204fce 100644
--- a/examples/widgets/doc/src/regexp.qdoc
+++ b/examples/widgets/doc/src/regexp.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example tools/regexp
\title Regular Expressions Example
\ingroup examples-widgets-tools
diff --git a/examples/widgets/doc/src/rogue.qdoc b/examples/widgets/doc/src/rogue.qdoc
index 81f34edc68..1690a351fb 100644
--- a/examples/widgets/doc/src/rogue.qdoc
+++ b/examples/widgets/doc/src/rogue.qdoc
@@ -151,7 +151,7 @@
When we enter \c quitState, we update the status bar of the
window.
-
+
\c QKeyEventTransition is a utility class that removes the hassle
of implementing transitions for \l{QKeyEvent}s. We simply need to
specify the key on which the transition should trigger and the
@@ -161,7 +161,7 @@
The transition from \c inputState allows triggering the quit state
when the player types \c {q}.
-
+
\snippet statemachine/rogue/window.cpp 5
The machine is set up, so it's time to start it.
diff --git a/examples/widgets/doc/src/sdi.qdoc b/examples/widgets/doc/src/sdi.qdoc
index 3e703a0ba8..3e8780423a 100644
--- a/examples/widgets/doc/src/sdi.qdoc
+++ b/examples/widgets/doc/src/sdi.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example mainwindows/sdi
\title SDI Example
\ingroup examples-mainwindow
diff --git a/examples/widgets/doc/src/settingseditor.qdoc b/examples/widgets/doc/src/settingseditor.qdoc
index b53b0389cc..f1e84b7eb6 100644
--- a/examples/widgets/doc/src/settingseditor.qdoc
+++ b/examples/widgets/doc/src/settingseditor.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example tools/settingseditor
\title Settings Editor Example
\ingroup examples-widgets-tools
diff --git a/examples/widgets/doc/src/simplewidgetmapper.qdoc b/examples/widgets/doc/src/simplewidgetmapper.qdoc
index 0b92c3a4b4..771ac982b5 100644
--- a/examples/widgets/doc/src/simplewidgetmapper.qdoc
+++ b/examples/widgets/doc/src/simplewidgetmapper.qdoc
@@ -61,7 +61,7 @@
The constructor of the \c Window class can be explained in three parts.
In the first part, we set up the widgets used for the user interface:
-
+
\snippet itemviews/simplewidgetmapper/window.cpp Set up widgets
We also set up the buddy relationships between various labels and the
diff --git a/examples/widgets/doc/src/spinboxes.qdoc b/examples/widgets/doc/src/spinboxes.qdoc
index 86cc246419..998a6d2636 100644
--- a/examples/widgets/doc/src/spinboxes.qdoc
+++ b/examples/widgets/doc/src/spinboxes.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example widgets/spinboxes
\title Spin Boxes Example
\ingroup examples-widgets
diff --git a/examples/widgets/doc/src/standarddialogs.qdoc b/examples/widgets/doc/src/standarddialogs.qdoc
index 57c3281ae8..26c2548611 100644
--- a/examples/widgets/doc/src/standarddialogs.qdoc
+++ b/examples/widgets/doc/src/standarddialogs.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example dialogs/standarddialogs
\title Standard Dialogs Example
\ingroup examples-dialogs
diff --git a/examples/widgets/doc/src/stardelegate.qdoc b/examples/widgets/doc/src/stardelegate.qdoc
index dae7ac9c80..4ee452d866 100644
--- a/examples/widgets/doc/src/stardelegate.qdoc
+++ b/examples/widgets/doc/src/stardelegate.qdoc
@@ -257,7 +257,7 @@
\l{QAbstractItemView::editTriggers()}{edit triggers}, so that the
editor is opened with a single click when the star rating item is
selected.
-
+
The \c populateTableWidget() function fills the QTableWidget with
data:
diff --git a/examples/widgets/doc/src/styleplugin.qdoc b/examples/widgets/doc/src/styleplugin.qdoc
index 51d1e5e73e..e65ded36a4 100644
--- a/examples/widgets/doc/src/styleplugin.qdoc
+++ b/examples/widgets/doc/src/styleplugin.qdoc
@@ -43,7 +43,7 @@
from that class, and adding a macro. In this example we extend Qt
by adding a new GUI look and feel (i.e., making a new QStyle
available). A high-level introduction to plugins is given in the
- plugin \l{How to Create Qt Plugins}{overview document}.
+ plugin \l{How to Create Qt Plugins}{overview document}.
Plugins that provide new styles inherit the QStylePlugin base
class. Style plugins are loaded by Qt and made available through
@@ -72,7 +72,7 @@
\section1 SimpleStylePlugin Class Definition
\c SimpleStylePlugin inherits QStylePlugin and is the plugin
- class.
+ class.
\snippet tools/styleplugin/plugin/simplestyleplugin.h 0
diff --git a/examples/widgets/doc/src/stylesheet.qdoc b/examples/widgets/doc/src/stylesheet.qdoc
index 79d9b35082..ee08b7b88a 100644
--- a/examples/widgets/doc/src/stylesheet.qdoc
+++ b/examples/widgets/doc/src/stylesheet.qdoc
@@ -30,7 +30,7 @@
\title Style Sheet Example
\ingroup examples-widgets
\brief The Style Sheet Example shows how to use style sheets.
-
+
\image stylesheet-pagefold.png Screen Shot of the Pagefold style sheet
*/
diff --git a/examples/widgets/doc/src/sub-attaq.qdoc b/examples/widgets/doc/src/sub-attaq.qdoc
index 1472412855..3b0070b28a 100644
--- a/examples/widgets/doc/src/sub-attaq.qdoc
+++ b/examples/widgets/doc/src/sub-attaq.qdoc
@@ -31,7 +31,7 @@
\brief This example shows Qt's ability to combine \l{The Animation Framework}{the animation framework}
and \l{The State Machine Framework}{the state machine framework} to create a game.
-
+
\image sub-attaq-demo.png
The purpose of the game is to destroy all submarines to win the current level.
diff --git a/examples/widgets/doc/src/tablet.qdoc b/examples/widgets/doc/src/tablet.qdoc
index 6cb9ef5057..4fa67b85d3 100644
--- a/examples/widgets/doc/src/tablet.qdoc
+++ b/examples/widgets/doc/src/tablet.qdoc
@@ -41,7 +41,7 @@
it is close but not pressed down on it), when a device is pushed
down and released from it, and when a device is moved on the
tablet.
-
+
The information available in QTabletEvent depends on the device
used. The tablet in this example has two different devices for
drawing: a stylus and an airbrush. For both devices the event
@@ -61,23 +61,23 @@
The example consists of the following:
\list
- \li The \c MainWindow class inherits QMainWindow and creates
- the examples menus and connect their slots and signals.
+ \li The \c MainWindow class inherits QMainWindow and creates
+ the examples menus and connect their slots and signals.
\li The \c TabletCanvas class inherits QWidget and
- receives tablet events. It uses the events to paint on a
- offscreen pixmap, which it draws onto itself.
+ receives tablet events. It uses the events to paint on a
+ offscreen pixmap, which it draws onto itself.
\li The \c TabletApplication class inherits QApplication. This
- class handles tablet events that are not sent to \c tabletEvent().
- We will look at this later.
+ class handles tablet events that are not sent to \c tabletEvent().
+ We will look at this later.
\li The \c main() function creates a \c MainWindow and shows it
- as a top level window.
+ as a top level window.
\endlist
\section1 MainWindow Class Definition
- The \c MainWindow creates a \c TabletCanvas and sets it as its
- center widget.
+ The \c MainWindow creates a \c TabletCanvas and sets it as its
+ center widget.
\snippet widgets/tablet/mainwindow.h 0
@@ -115,10 +115,10 @@
\snippet widgets/tablet/mainwindow.cpp 2
- The \c TabletCanvas class supports two ways by which the alpha
+ The \c TabletCanvas class supports two ways by which the alpha
channel of the drawing color can be changed: tablet pressure and
tilt. We have one action for each and an action if the alpha
- channel should not be changed.
+ channel should not be changed.
Here is the implementation of \c lineWidthActionTriggered():
@@ -155,12 +155,12 @@
\snippet widgets/tablet/mainwindow.cpp 7
- We show a message box with a short description of the example.
+ We show a message box with a short description of the example.
\c createActions() creates all actions and action groups of
the example. We look at the creation of one action group and its
actions. See the \l{Application Example}{application example} if
- you want a high-level introduction to QActions.
+ you want a high-level introduction to QActions.
Here is the implementation of \c createActions:
@@ -189,7 +189,7 @@
\section1 TabletCanvas Class Definition
The \c TabletCanvas class provides a surface on which the
- user can draw with a tablet.
+ user can draw with a tablet.
\snippet widgets/tablet/tabletcanvas.h 0
@@ -198,7 +198,7 @@
these; their values decide if it is the tablet pressure or tilt
that will alter them. We keep a private variable for each, the \c
alphaChannelType, \c colorSturationType, and \c penWidthType,
- which we provide access functions for.
+ which we provide access functions for.
We draw on a QPixmap with \c myPen and \c myBrush using \c
myColor. The \c saveImage() and \c loadImage() saves and loads
@@ -291,7 +291,7 @@
-60, 127 equals 0, and 255 equals 60 degrees. The angle measured
is between the device and the perpendicular of the tablet (see
QTabletEvent for an illustration).
-
+
\snippet widgets/tablet/tabletcanvas.cpp 8
The alpha channel of QColor is given as a number between 0
@@ -301,8 +301,8 @@
taking the absolute value we get the smallest alpha values (i.e.,
the color is most transparent) when the pen is perpendicular to
the tablet. We select the largest of the vertical and horizontal
- tilt value.
-
+ tilt value.
+
\snippet widgets/tablet/tabletcanvas.cpp 9
The colorsaturation is given as a number between 0 and 255. It is
@@ -317,7 +317,7 @@
the angle between the device and the perpendicular of the tablet.
\snippet widgets/tablet/tabletcanvas.cpp 11
-
+
We finally check whether the pointer is the stylus or the eraser.
If it is the eraser, we set the color to the background color of
the pixmap an let the pressure decide the pen width, else we set
@@ -327,7 +327,7 @@
\section1 TabletApplication Class Definition
We inherit QApplication in this class because we want to
- reimplement the \l{QApplication::}{event()} function.
+ reimplement the \l{QApplication::}{event()} function.
\snippet widgets/tablet/tabletapplication.h 0
@@ -336,7 +336,7 @@
and TabletLeaveProximity events are not sendt to the QApplication
object, while other tablet events are sendt to the QWidget's
\c event(), which sends them on to \l{QWidget::}{tabletEvent()}.
- Since we want to handle these events we have implemented \c
+ Since we want to handle these events we have implemented \c
TabletApplication.
@@ -352,7 +352,7 @@
events is to do work that is dependent on what kind of device is
used on the tablet. This way, you don't have to do this work
when other events are generated, which is more frequently than the
- leave and enter proximity events. We call \c setTabletDevice() in
+ leave and enter proximity events. We call \c setTabletDevice() in
\c TabletCanvas.
\section1 The \c main() function
diff --git a/examples/widgets/doc/src/tetrix.qdoc b/examples/widgets/doc/src/tetrix.qdoc
index 599323deb0..7527d6758f 100644
--- a/examples/widgets/doc/src/tetrix.qdoc
+++ b/examples/widgets/doc/src/tetrix.qdoc
@@ -25,7 +25,7 @@
**
****************************************************************************/
-/*!
+/*!
\example widgets/tetrix
\title Tetrix Example
\ingroup examples-widgets
diff --git a/examples/widgets/doc/src/undo.qdoc b/examples/widgets/doc/src/undo.qdoc
index 07f586b8f3..fc89751e90 100644
--- a/examples/widgets/doc/src/undo.qdoc
+++ b/examples/widgets/doc/src/undo.qdoc
@@ -35,7 +35,7 @@
\image undodemo.png
Qt's undo framework is an implementation of the Command
- pattern, which provides advanced undo/redo functionality.
+ pattern, which provides advanced undo/redo functionality.
To show the abilities of the framework, we have implemented a
small diagram application in which the diagram items are geometric
diff --git a/examples/widgets/doc/src/undoframework.qdoc b/examples/widgets/doc/src/undoframework.qdoc
index ba146e65b9..1710ab9132 100644
--- a/examples/widgets/doc/src/undoframework.qdoc
+++ b/examples/widgets/doc/src/undoframework.qdoc
@@ -61,9 +61,9 @@
The example consists of the following classes:
- \list
+ \list
\li \c MainWindow is the main window and arranges the
- example's widgets. It creates the commands based
+ example's widgets. It creates the commands based
on user input and keeps them on the command stack.
\li \c AddCommand adds an item to the scene.
\li \c DeleteCommand deletes an item from the scene.
@@ -85,23 +85,23 @@
\l{QUndoCommand}s and pushes and pops them from the stack when it
receives the \c triggered() signal from \c undoAction and \c
redoAction.
-
+
\section1 MainWindow Class Implementation
- We will start with a look at the constructor:
+ We will start with a look at the constructor:
\snippet tools/undoframework/mainwindow.cpp 0
- In the constructor, we set up the DiagramScene and QGraphicsView.
+ In the constructor, we set up the DiagramScene and QGraphicsView.
- Here is the \c createUndoView() function:
+ Here is the \c createUndoView() function:
\snippet tools/undoframework/mainwindow.cpp 1
The QUndoView is a widget that display the text, which is set with
the \l{QUndoCommand::}{setText()} function, for each QUndoCommand
in the undo stack in a list.
-
+
Here is the \c createActions() function:
\snippet tools/undoframework/mainwindow.cpp 2
@@ -130,7 +130,7 @@
We have to use the QMenu \c aboutToShow() and \c aboutToHide()
signals since we only want \c deleteAction to be enabled when we
- have selected an item.
+ have selected an item.
Here is the \c itemMoved() slot:
@@ -155,9 +155,9 @@
\snippet tools/undoframework/mainwindow.cpp 12
We implement \c itemMenuAboutToShow() and \c itemMenuAboutToHide()
- to get a dynamic item menu. These slots are connected to the
+ to get a dynamic item menu. These slots are connected to the
\l{QMenu::}{aboutToShow()} and \l{QMenu::}{aboutToHide()} signals.
- We need this to disable or enable the \c deleteAction.
+ We need this to disable or enable the \c deleteAction.
Here is the \c addBox() slot:
@@ -171,21 +171,21 @@
\snippet tools/undoframework/mainwindow.cpp 14
The \c addTriangle() function creates an AddCommand and pushes it
- on the undo stack.
+ on the undo stack.
Here is the implementation of \c about():
\snippet tools/undoframework/mainwindow.cpp 15
-
+
The about slot is triggered by the \c aboutAction and displays an
about box for the example.
\section1 AddCommand Class Definition
-
+
\snippet tools/undoframework/commands.h 2
The \c AddCommand class adds DiagramItem graphics items to the
- DiagramScene.
+ DiagramScene.
\section1 AddCommand Class Implementation
@@ -208,20 +208,20 @@
constructor.
\section1 DeleteCommand Class Definition
-
+
\snippet tools/undoframework/commands.h 1
The DeleteCommand class implements the functionality to remove an
item from the scene.
-
+
\section1 DeleteCommand Class Implementation
\snippet tools/undoframework/commands.cpp 4
We know that there must be one selected item as it is not possible
to create a DeleteCommand unless the item to be deleted is
- selected and that only one item can be selected at any time.
- The item must be unselected if it is inserted back into the
+ selected and that only one item can be selected at any time.
+ The item must be unselected if it is inserted back into the
scene.
\snippet tools/undoframework/commands.cpp 5
@@ -242,7 +242,7 @@
\section1 MoveCommand Class Implementation
-
+
The constructor of MoveCommand looks like this:
\snippet tools/undoframework/commands.cpp 0
@@ -252,12 +252,12 @@
\snippet tools/undoframework/commands.cpp 2
- We simply set the items old position and update the scene.
+ We simply set the items old position and update the scene.
\snippet tools/undoframework/commands.cpp 3
We set the item to its new position.
-
+
\snippet tools/undoframework/commands.cpp 1
Whenever a MoveCommand is created, this function is called to
@@ -268,7 +268,7 @@
We first check whether it is the same item that has been moved
twice, in which case we merge the commands. We update the position
of the item so that it will take the last position in the move
- sequence when undone.
+ sequence when undone.
\section1 DiagramScene Class Definition
@@ -281,7 +281,7 @@
as it only deals with graphics framework issues.
\section1 The \c main() Function
-
+
The \c main() function of the program looks like this:
\snippet tools/undoframework/main.cpp 0
diff --git a/examples/widgets/draganddrop/draggableicons/dragwidget.cpp b/examples/widgets/draganddrop/draggableicons/dragwidget.cpp
index b13d571a26..5d01ee7619 100644
--- a/examples/widgets/draganddrop/draggableicons/dragwidget.cpp
+++ b/examples/widgets/draganddrop/draggableicons/dragwidget.cpp
@@ -103,7 +103,7 @@ void DragWidget::dropEvent(QDropEvent *event)
if (event->mimeData()->hasFormat("application/x-dnditemdata")) {
QByteArray itemData = event->mimeData()->data("application/x-dnditemdata");
QDataStream dataStream(&itemData, QIODevice::ReadOnly);
-
+
QPixmap pixmap;
QPoint offset;
dataStream >> pixmap >> offset;
@@ -143,7 +143,7 @@ void DragWidget::mousePressEvent(QMouseEvent *event)
QMimeData *mimeData = new QMimeData;
mimeData->setData("application/x-dnditemdata", itemData);
//! [2]
-
+
//! [3]
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
diff --git a/examples/widgets/draganddrop/dropsite/droparea.cpp b/examples/widgets/draganddrop/dropsite/droparea.cpp
index 8662ec80b3..fcabeb3b62 100644
--- a/examples/widgets/draganddrop/dropsite/droparea.cpp
+++ b/examples/widgets/draganddrop/dropsite/droparea.cpp
@@ -87,7 +87,7 @@ void DropArea::dropEvent(QDropEvent *event)
setText(mimeData->html());
setTextFormat(Qt::RichText);
} else if (mimeData->hasText()) {
- setText(mimeData->text());
+ setText(mimeData->text());
setTextFormat(Qt::PlainText);
} else if (mimeData->hasUrls()) {
QList<QUrl> urlList = mimeData->urls();
@@ -102,7 +102,7 @@ void DropArea::dropEvent(QDropEvent *event)
}
//! [dropEvent() function part2]
-//! [dropEvent() function part3]
+//! [dropEvent() function part3]
setBackgroundRole(QPalette::Dark);
event->acceptProposedAction();
}
diff --git a/examples/widgets/draganddrop/dropsite/dropsitewindow.cpp b/examples/widgets/draganddrop/dropsite/dropsitewindow.cpp
index 9b7f0c3de9..d69f4ee2a8 100644
--- a/examples/widgets/draganddrop/dropsite/dropsitewindow.cpp
+++ b/examples/widgets/draganddrop/dropsite/dropsitewindow.cpp
@@ -103,7 +103,7 @@ void DropSiteWindow::updateFormatsTable(const QMimeData *mimeData)
return;
//! [updateFormatsTable() part1]
-//! [updateFormatsTable() part2]
+//! [updateFormatsTable() part2]
foreach (QString format, mimeData->formats()) {
QTableWidgetItem *formatItem = new QTableWidgetItem(format);
formatItem->setFlags(Qt::ItemIsEnabled);
@@ -129,7 +129,7 @@ void DropSiteWindow::updateFormatsTable(const QMimeData *mimeData)
text.append(hex + " ");
}
}
-//! [updateFormatsTable() part3]
+//! [updateFormatsTable() part3]
//! [updateFormatsTable() part4]
int row = formatsTable->rowCount();
@@ -137,7 +137,7 @@ void DropSiteWindow::updateFormatsTable(const QMimeData *mimeData)
formatsTable->setItem(row, 0, new QTableWidgetItem(format));
formatsTable->setItem(row, 1, new QTableWidgetItem(text));
}
-
+
formatsTable->resizeColumnToContents(0);
}
-//! [updateFormatsTable() part4]
+//! [updateFormatsTable() part4]
diff --git a/examples/widgets/graphicsview/boxes/scene.cpp b/examples/widgets/graphicsview/boxes/scene.cpp
index c907070db8..11e9f4ea5a 100644
--- a/examples/widgets/graphicsview/boxes/scene.cpp
+++ b/examples/widgets/graphicsview/boxes/scene.cpp
@@ -567,7 +567,7 @@ void Scene::initGL()
m_environmentProgram->link();
const int NOISE_SIZE = 128; // for a different size, B and BM in fbm.c must also be changed
- m_noise = new GLTexture3D(NOISE_SIZE, NOISE_SIZE, NOISE_SIZE);
+ m_noise = new GLTexture3D(NOISE_SIZE, NOISE_SIZE, NOISE_SIZE);
QRgb *data = new QRgb[NOISE_SIZE * NOISE_SIZE * NOISE_SIZE];
memset(data, 0, NOISE_SIZE * NOISE_SIZE * NOISE_SIZE * sizeof(QRgb));
QRgb *p = data;
diff --git a/examples/widgets/graphicsview/chip/main.cpp b/examples/widgets/graphicsview/chip/main.cpp
index a0c1b919d1..c0f271a83c 100644
--- a/examples/widgets/graphicsview/chip/main.cpp
+++ b/examples/widgets/graphicsview/chip/main.cpp
@@ -51,7 +51,7 @@ int main(int argc, char *argv[])
app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
MainWindow window;
- window.show();
+ window.show();
return app.exec();
}
diff --git a/examples/widgets/graphicsview/chip/mainwindow.cpp b/examples/widgets/graphicsview/chip/mainwindow.cpp
index 0925e9c9cb..510dd2e5c9 100644
--- a/examples/widgets/graphicsview/chip/mainwindow.cpp
+++ b/examples/widgets/graphicsview/chip/mainwindow.cpp
@@ -53,7 +53,7 @@ MainWindow::MainWindow(QWidget *parent)
h1Splitter = new QSplitter;
h2Splitter = new QSplitter;
-
+
QSplitter *vSplitter = new QSplitter;
vSplitter->setOrientation(Qt::Vertical);
vSplitter->addWidget(h1Splitter);
diff --git a/examples/widgets/graphicsview/chip/mainwindow.h b/examples/widgets/graphicsview/chip/mainwindow.h
index 876a9f7d77..d4a9dfda85 100644
--- a/examples/widgets/graphicsview/chip/mainwindow.h
+++ b/examples/widgets/graphicsview/chip/mainwindow.h
@@ -54,11 +54,11 @@ class MainWindow : public QWidget
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
-
+
private:
void setupMatrix();
void populateScene();
-
+
QGraphicsScene *scene;
QSplitter *h1Splitter;
QSplitter *h2Splitter;
diff --git a/examples/widgets/graphicsview/chip/view.cpp b/examples/widgets/graphicsview/chip/view.cpp
index 4b5b608163..a439c837de 100644
--- a/examples/widgets/graphicsview/chip/view.cpp
+++ b/examples/widgets/graphicsview/chip/view.cpp
@@ -252,7 +252,7 @@ void View::toggleAntialiasing()
void View::print()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
QPrinter printer;
QPrintDialog dialog(&printer, this);
if (dialog.exec() == QDialog::Accepted) {
diff --git a/examples/widgets/graphicsview/collidingmice/mouse.cpp b/examples/widgets/graphicsview/collidingmice/mouse.cpp
index e44d5549b3..d22e935828 100644
--- a/examples/widgets/graphicsview/collidingmice/mouse.cpp
+++ b/examples/widgets/graphicsview/collidingmice/mouse.cpp
@@ -159,7 +159,7 @@ void Mouse::advance(int step)
foreach (QGraphicsItem *item, dangerMice) {
if (item == this)
continue;
-
+
QLineF lineToMouse(QPointF(0, 0), mapFromItem(item, 0, 0));
qreal angleToMouse = ::acos(lineToMouse.dx() / lineToMouse.length());
if (lineToMouse.dy() < 0)
diff --git a/examples/widgets/graphicsview/dragdroprobot/robot.cpp b/examples/widgets/graphicsview/dragdroprobot/robot.cpp
index 90ae4e9e22..4bfcac4800 100644
--- a/examples/widgets/graphicsview/dragdroprobot/robot.cpp
+++ b/examples/widgets/graphicsview/dragdroprobot/robot.cpp
@@ -162,7 +162,7 @@ void RobotTorso::paint(QPainter *painter,
{
Q_UNUSED(option);
Q_UNUSED(widget);
-
+
painter->setBrush(dragOver ? color.light(130) : color);
painter->drawRoundedRect(-20, -20, 40, 60, 25, 25, Qt::RelativeSize);
painter->drawEllipse(-25, -20, 20, 20);
diff --git a/examples/widgets/graphicsview/dragdroprobot/robot.h b/examples/widgets/graphicsview/dragdroprobot/robot.h
index bb61bfe54b..a0c842e72c 100644
--- a/examples/widgets/graphicsview/dragdroprobot/robot.h
+++ b/examples/widgets/graphicsview/dragdroprobot/robot.h
@@ -109,7 +109,7 @@ class Robot : public RobotPart
{
public:
Robot(QGraphicsItem *parent = 0);
-
+
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
};
diff --git a/examples/widgets/graphicsview/elasticnodes/edge.cpp b/examples/widgets/graphicsview/elasticnodes/edge.cpp
index 8561983db9..1923550fd3 100644
--- a/examples/widgets/graphicsview/elasticnodes/edge.cpp
+++ b/examples/widgets/graphicsview/elasticnodes/edge.cpp
@@ -136,7 +136,7 @@ void Edge::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
QPointF sourceArrowP1 = sourcePoint + QPointF(sin(angle + Pi / 3) * arrowSize,
cos(angle + Pi / 3) * arrowSize);
QPointF sourceArrowP2 = sourcePoint + QPointF(sin(angle + Pi - Pi / 3) * arrowSize,
- cos(angle + Pi - Pi / 3) * arrowSize);
+ cos(angle + Pi - Pi / 3) * arrowSize);
QPointF destArrowP1 = destPoint + QPointF(sin(angle - Pi / 3) * arrowSize,
cos(angle - Pi / 3) * arrowSize);
QPointF destArrowP2 = destPoint + QPointF(sin(angle - Pi + Pi / 3) * arrowSize,
diff --git a/examples/widgets/graphicsview/elasticnodes/edge.h b/examples/widgets/graphicsview/elasticnodes/edge.h
index 5800ca0d32..6ab71e3478 100644
--- a/examples/widgets/graphicsview/elasticnodes/edge.h
+++ b/examples/widgets/graphicsview/elasticnodes/edge.h
@@ -58,11 +58,11 @@ public:
enum { Type = UserType + 2 };
int type() const { return Type; }
-
+
protected:
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
-
+
private:
Node *source, *dest;
diff --git a/examples/widgets/graphicsview/elasticnodes/node.h b/examples/widgets/graphicsview/elasticnodes/node.h
index 703b99801a..813dbb1c54 100644
--- a/examples/widgets/graphicsview/elasticnodes/node.h
+++ b/examples/widgets/graphicsview/elasticnodes/node.h
@@ -74,7 +74,7 @@ protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-
+
private:
QList<Edge *> edgeList;
QPointF newPos;
diff --git a/examples/widgets/graphicsview/embeddeddialogs/customproxy.cpp b/examples/widgets/graphicsview/embeddeddialogs/customproxy.cpp
index 5e7577f28b..fa108a21b3 100644
--- a/examples/widgets/graphicsview/embeddeddialogs/customproxy.cpp
+++ b/examples/widgets/graphicsview/embeddeddialogs/customproxy.cpp
@@ -64,7 +64,7 @@ void CustomProxy::paintWindowFrame(QPainter *painter, const QStyleOptionGraphics
QWidget *widget)
{
const QColor color(0, 0, 0, 64);
-
+
QRectF r = windowFrameRect();
QRectF right(r.right(), r.top() + 10, 10, r.height() - 10);
QRectF bottom(r.left() + 10, r.bottom(), r.width(), 10);
@@ -159,7 +159,7 @@ void CustomProxy::zoomIn()
{
if (timeLine->direction() != QTimeLine::Forward)
timeLine->setDirection(QTimeLine::Forward);
- if (timeLine->state() == QTimeLine::NotRunning)
+ if (timeLine->state() == QTimeLine::NotRunning)
timeLine->start();
}
@@ -167,6 +167,6 @@ void CustomProxy::zoomOut()
{
if (timeLine->direction() != QTimeLine::Backward)
timeLine->setDirection(QTimeLine::Backward);
- if (timeLine->state() == QTimeLine::NotRunning)
+ if (timeLine->state() == QTimeLine::NotRunning)
timeLine->start();
}
diff --git a/examples/widgets/graphicsview/embeddeddialogs/customproxy.h b/examples/widgets/graphicsview/embeddeddialogs/customproxy.h
index 3f7b540d2b..7257a90b12 100644
--- a/examples/widgets/graphicsview/embeddeddialogs/customproxy.h
+++ b/examples/widgets/graphicsview/embeddeddialogs/customproxy.h
@@ -54,7 +54,7 @@ public:
QRectF boundingRect() const;
void paintWindowFrame(QPainter *painter, const QStyleOptionGraphicsItem *option,
- QWidget *widget);
+ QWidget *widget);
protected:
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
diff --git a/examples/widgets/itemviews/addressbook/adddialog.cpp b/examples/widgets/itemviews/addressbook/adddialog.cpp
index f68cacc2e5..bb31fd60c4 100644
--- a/examples/widgets/itemviews/addressbook/adddialog.cpp
+++ b/examples/widgets/itemviews/addressbook/adddialog.cpp
@@ -50,31 +50,31 @@ AddDialog::AddDialog(QWidget *parent)
addressLabel = new QLabel("Address");
okButton = new QPushButton("OK");
cancelButton = new QPushButton("Cancel");
-
+
nameText = new QLineEdit;
addressText = new QTextEdit;
-
+
QGridLayout *gLayout = new QGridLayout;
gLayout->setColumnStretch(1, 2);
gLayout->addWidget(nameLabel, 0, 0);
gLayout->addWidget(nameText, 0, 1);
-
+
gLayout->addWidget(addressLabel, 1, 0, Qt::AlignLeft|Qt::AlignTop);
gLayout->addWidget(addressText, 1, 1, Qt::AlignLeft);
-
+
QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addWidget(okButton);
buttonLayout->addWidget(cancelButton);
-
+
gLayout->addLayout(buttonLayout, 2, 1, Qt::AlignRight);
-
+
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(gLayout);
setLayout(mainLayout);
-
+
connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
-
+
setWindowTitle(tr("Add a Contact"));
}
//! [0]
diff --git a/examples/widgets/itemviews/addressbook/adddialog.h b/examples/widgets/itemviews/addressbook/adddialog.h
index 8412664287..78f56ef744 100644
--- a/examples/widgets/itemviews/addressbook/adddialog.h
+++ b/examples/widgets/itemviews/addressbook/adddialog.h
@@ -54,7 +54,7 @@ QT_END_NAMESPACE
class AddDialog : public QDialog
{
Q_OBJECT
-
+
public:
AddDialog(QWidget *parent = 0);
QLineEdit *nameText;
diff --git a/examples/widgets/itemviews/addressbook/addresswidget.cpp b/examples/widgets/itemviews/addressbook/addresswidget.cpp
index 2c05e0e059..cd6f4a5534 100644
--- a/examples/widgets/itemviews/addressbook/addresswidget.cpp
+++ b/examples/widgets/itemviews/addressbook/addresswidget.cpp
@@ -52,7 +52,7 @@ AddressWidget::AddressWidget(QWidget *parent)
connect(newAddressTab, SIGNAL(sendDetails(QString, QString)),
this, SLOT(addEntry(QString, QString)));
- addTab(newAddressTab, "Address Book");
+ addTab(newAddressTab, "Address Book");
setupTabs();
}
@@ -60,13 +60,13 @@ AddressWidget::AddressWidget(QWidget *parent)
//! [2]
void AddressWidget::addEntry()
-{
+{
AddDialog aDialog;
if (aDialog.exec()) {
QString name = aDialog.nameText->text();
QString address = aDialog.addressText->toPlainText();
-
+
addEntry(name, address);
}
}
@@ -74,7 +74,7 @@ void AddressWidget::addEntry()
//! [3]
void AddressWidget::addEntry(QString name, QString address)
-{
+{
QList<QPair<QString, QString> >list = table->getList();
QPair<QString, QString> pair(name, address);
@@ -110,14 +110,14 @@ void AddressWidget::editEntry()
QModelIndex nameIndex = table->index(row, 0, QModelIndex());
QVariant varName = table->data(nameIndex, Qt::DisplayRole);
name = varName.toString();
-
+
QModelIndex addressIndex = table->index(row, 1, QModelIndex());
QVariant varAddr = table->data(addressIndex, Qt::DisplayRole);
address = varAddr.toString();
}
//! [4a]
-
-//! [4b]
+
+//! [4b]
AddDialog aDialog;
aDialog.setWindowTitle(tr("Edit a Contact"));
@@ -141,7 +141,7 @@ void AddressWidget::removeEntry()
QTableView *temp = static_cast<QTableView*>(currentWidget());
QSortFilterProxyModel *proxy = static_cast<QSortFilterProxyModel*>(temp->model());
QItemSelectionModel *selectionModel = temp->selectionModel();
-
+
QModelIndexList indexes = selectionModel->selectedRows();
foreach (QModelIndex index, indexes) {
@@ -163,7 +163,7 @@ void AddressWidget::setupTabs()
for (int i = 0; i < groups.size(); ++i) {
QString str = groups.at(i);
-
+
proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(table);
@@ -181,7 +181,7 @@ void AddressWidget::setupTabs()
proxyModel->setFilterRegExp(QRegExp(newStr, Qt::CaseInsensitive));
proxyModel->setFilterKeyColumn(0);
proxyModel->sort(0, Qt::AscendingOrder);
-
+
connect(tableView->selectionModel(),
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SIGNAL(selectionChanged(QItemSelection)));
diff --git a/examples/widgets/itemviews/addressbook/mainwindow.cpp b/examples/widgets/itemviews/addressbook/mainwindow.cpp
index 8f1ea81763..8e66e9cb49 100644
--- a/examples/widgets/itemviews/addressbook/mainwindow.cpp
+++ b/examples/widgets/itemviews/addressbook/mainwindow.cpp
@@ -58,7 +58,7 @@ MainWindow::MainWindow()
void MainWindow::createMenus()
{
fileMenu = menuBar()->addMenu(tr("&File"));
-
+
openAct = new QAction(tr("&Open..."), this);
fileMenu->addAction(openAct);
connect(openAct, SIGNAL(triggered()), this, SLOT(openFile()));
@@ -79,7 +79,7 @@ void MainWindow::createMenus()
addAct = new QAction(tr("&Add Entry..."), this);
toolMenu->addAction(addAct);
connect(addAct, SIGNAL(triggered()), addressWidget, SLOT(addEntry()));
-
+
//! [1b]
editAct = new QAction(tr("&Edit Entry..."), this);
editAct->setEnabled(false);
@@ -120,7 +120,7 @@ void MainWindow::saveFile()
void MainWindow::updateActions(const QItemSelection &selection)
{
QModelIndexList indexes = selection.indexes();
-
+
if (!indexes.isEmpty()) {
removeAct->setEnabled(true);
editAct->setEnabled(true);
diff --git a/examples/widgets/itemviews/addressbook/newaddresstab.cpp b/examples/widgets/itemviews/addressbook/newaddresstab.cpp
index b443d9cf96..a8e770cab8 100644
--- a/examples/widgets/itemviews/addressbook/newaddresstab.cpp
+++ b/examples/widgets/itemviews/addressbook/newaddresstab.cpp
@@ -50,15 +50,15 @@ NewAddressTab::NewAddressTab(QWidget *parent)
descriptionLabel = new QLabel(tr("There are currently no contacts in your address book. "
"\nClick Add to add new contacts."));
-
+
addButton = new QPushButton(tr("Add"));
-
+
connect(addButton, SIGNAL(clicked()), this, SLOT(addEntry()));
-
+
mainLayout = new QVBoxLayout;
mainLayout->addWidget(descriptionLabel);
mainLayout->addWidget(addButton, 0, Qt::AlignCenter);
-
+
setLayout(mainLayout);
}
//! [0]
@@ -67,11 +67,11 @@ NewAddressTab::NewAddressTab(QWidget *parent)
void NewAddressTab::addEntry()
{
AddDialog aDialog;
-
+
if (aDialog.exec()) {
QString name = aDialog.nameText->text();
QString address = aDialog.addressText->toPlainText();
-
+
emit sendDetails(name, address);
}
}
diff --git a/examples/widgets/itemviews/addressbook/newaddresstab.h b/examples/widgets/itemviews/addressbook/newaddresstab.h
index 51e75aa366..2db7302e75 100644
--- a/examples/widgets/itemviews/addressbook/newaddresstab.h
+++ b/examples/widgets/itemviews/addressbook/newaddresstab.h
@@ -53,7 +53,7 @@ QT_END_NAMESPACE
class NewAddressTab : public QWidget
{
Q_OBJECT
-
+
public:
NewAddressTab(QWidget *parent = 0);
@@ -67,7 +67,7 @@ private:
QLabel *descriptionLabel;
QPushButton *addButton;
QVBoxLayout *mainLayout;
-
+
};
//! [0]
diff --git a/examples/widgets/itemviews/addressbook/tablemodel.h b/examples/widgets/itemviews/addressbook/tablemodel.h
index 0ef54fae6a..e282defa1b 100644
--- a/examples/widgets/itemviews/addressbook/tablemodel.h
+++ b/examples/widgets/itemviews/addressbook/tablemodel.h
@@ -49,7 +49,7 @@
class TableModel : public QAbstractTableModel
{
Q_OBJECT
-
+
public:
TableModel(QObject *parent = 0);
TableModel(QList<QPair<QString, QString> > listofPairs, QObject *parent = 0);
diff --git a/examples/widgets/itemviews/combowidgetmapper/window.cpp b/examples/widgets/itemviews/combowidgetmapper/window.cpp
index 39ba428ced..3dfb2834a8 100644
--- a/examples/widgets/itemviews/combowidgetmapper/window.cpp
+++ b/examples/widgets/itemviews/combowidgetmapper/window.cpp
@@ -101,7 +101,7 @@ void Window::setupModel()
QStringList items;
items << tr("Home") << tr("Work") << tr("Other");
typeModel = new QStringListModel(items, this);
-
+
model = new QStandardItemModel(5, 3, this);
QStringList names;
names << "Alice" << "Bob" << "Carol" << "Donald" << "Emma";
@@ -115,7 +115,7 @@ void Window::setupModel()
QStringList types;
types << "0" << "1" << "2" << "0" << "2";
-
+
for (int row = 0; row < 5; ++row) {
QStandardItem *item = new QStandardItem(names[row]);
model->setItem(row, 0, item);
diff --git a/examples/widgets/itemviews/fetchmore/filelistmodel.cpp b/examples/widgets/itemviews/fetchmore/filelistmodel.cpp
index 5e7ba2c754..6532189b06 100644
--- a/examples/widgets/itemviews/fetchmore/filelistmodel.cpp
+++ b/examples/widgets/itemviews/fetchmore/filelistmodel.cpp
@@ -60,10 +60,10 @@ QVariant FileListModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
-
+
if (index.row() >= fileList.size() || index.row() < 0)
return QVariant();
-
+
if (role == Qt::DisplayRole) {
return fileList.at(index.row());
} else if (role == Qt::BackgroundRole) {
@@ -94,7 +94,7 @@ void FileListModel::fetchMore(const QModelIndex & /* index */)
int itemsToFetch = qMin(100, remainder);
beginInsertRows(QModelIndex(), fileCount, fileCount+itemsToFetch-1);
-
+
fileCount += itemsToFetch;
endInsertRows();
diff --git a/examples/widgets/itemviews/fetchmore/window.cpp b/examples/widgets/itemviews/fetchmore/window.cpp
index ed2d2a2260..f35593923d 100644
--- a/examples/widgets/itemviews/fetchmore/window.cpp
+++ b/examples/widgets/itemviews/fetchmore/window.cpp
@@ -65,7 +65,7 @@ Window::Window(QWidget *parent)
logViewer, SLOT(clear()));
connect(model, SIGNAL(numberPopulated(int)),
this, SLOT(updateLog(int)));
-
+
QGridLayout *layout = new QGridLayout;
layout->addWidget(label, 0, 0);
layout->addWidget(lineEdit, 0, 1);
diff --git a/examples/widgets/itemviews/pixelator/mainwindow.cpp b/examples/widgets/itemviews/pixelator/mainwindow.cpp
index dec9ee4084..1f6a403efc 100644
--- a/examples/widgets/itemviews/pixelator/mainwindow.cpp
+++ b/examples/widgets/itemviews/pixelator/mainwindow.cpp
@@ -154,7 +154,7 @@ void MainWindow::openImage(const QString &fileName)
void MainWindow::printImage()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
if (model->rowCount(QModelIndex())*model->columnCount(QModelIndex()) > 90000) {
QMessageBox::StandardButton answer;
answer = QMessageBox::question(this, tr("Large Image Size"),
@@ -226,7 +226,7 @@ void MainWindow::printImage()
tr("The printing process was canceled."), QMessageBox::Cancel);
}
#else
- QMessageBox::information(this, tr("Printing canceled"),
+ QMessageBox::information(this, tr("Printing canceled"),
tr("Printing is not supported on this Qt build"), QMessageBox::Cancel);
#endif
}
diff --git a/examples/widgets/itemviews/simplewidgetmapper/window.cpp b/examples/widgets/itemviews/simplewidgetmapper/window.cpp
index 7699bcc929..0e3314601a 100644
--- a/examples/widgets/itemviews/simplewidgetmapper/window.cpp
+++ b/examples/widgets/itemviews/simplewidgetmapper/window.cpp
@@ -109,7 +109,7 @@ void Window::setupModel()
QStringList ages;
ages << "20" << "31" << "32" << "19" << "26";
-
+
for (int row = 0; row < 5; ++row) {
QStandardItem *item = new QStandardItem(names[row]);
model->setItem(row, 0, item);
diff --git a/examples/widgets/itemviews/spreadsheet/spreadsheet.cpp b/examples/widgets/itemviews/spreadsheet/spreadsheet.cpp
index 39dd35e342..59d29f0e61 100644
--- a/examples/widgets/itemviews/spreadsheet/spreadsheet.cpp
+++ b/examples/widgets/itemviews/spreadsheet/spreadsheet.cpp
@@ -627,7 +627,7 @@ QString encode_pos(int row, int col)
void SpreadSheet::print()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
QPrinter printer(QPrinter::ScreenResolution);
QPrintPreviewDialog dlg(&printer);
PrintView view;
diff --git a/examples/widgets/itemviews/spreadsheet/spreadsheet.h b/examples/widgets/itemviews/spreadsheet/spreadsheet.h
index c81af6666a..279146552a 100644
--- a/examples/widgets/itemviews/spreadsheet/spreadsheet.h
+++ b/examples/widgets/itemviews/spreadsheet/spreadsheet.h
@@ -77,7 +77,7 @@ public slots:
void actionSubtract();
void actionAdd();
void actionMultiply();
- void actionDivide();
+ void actionDivide();
protected:
void setupContextMenu();
diff --git a/examples/widgets/painting/deform/pathdeform.cpp b/examples/widgets/painting/deform/pathdeform.cpp
index 3c0624ac76..9f9a88700c 100644
--- a/examples/widgets/painting/deform/pathdeform.cpp
+++ b/examples/widgets/painting/deform/pathdeform.cpp
@@ -289,7 +289,7 @@ void PathDeformWidget::setStyle( QStyle * style )
return;
m_controls->setStyle(style);
-
+
QList<QWidget *> widgets = m_controls->findChildren<QWidget *>();
foreach (QWidget *w, widgets)
w->setStyle(style);
@@ -481,7 +481,7 @@ void PathDeformRenderer::mousePressEvent(QMouseEvent *e)
m_offset = m_pos - e->pos();
m_mousePress = e->pos();
-
+
// If we're not running in small screen mode, always assume we're dragging
m_mouseDrag = !m_smallScreen;
diff --git a/examples/widgets/painting/fontsampler/mainwindow.cpp b/examples/widgets/painting/fontsampler/mainwindow.cpp
index 645a2b1a9a..516ba5e2bc 100644
--- a/examples/widgets/painting/fontsampler/mainwindow.cpp
+++ b/examples/widgets/painting/fontsampler/mainwindow.cpp
@@ -241,7 +241,7 @@ QMap<QString, StyleItems> MainWindow::currentPageMap()
return pageMap;
}
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
void MainWindow::on_printAction_triggered()
{
pageMap = currentPageMap();
diff --git a/examples/widgets/painting/fontsampler/mainwindow.h b/examples/widgets/painting/fontsampler/mainwindow.h
index f9e06c8b89..f4ad448480 100644
--- a/examples/widgets/painting/fontsampler/mainwindow.h
+++ b/examples/widgets/painting/fontsampler/mainwindow.h
@@ -62,12 +62,12 @@ public:
public slots:
void on_clearAction_triggered();
void on_markAction_triggered();
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
void on_printAction_triggered();
void on_printPreviewAction_triggered();
#endif
void on_unmarkAction_triggered();
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
void printDocument(QPrinter *printer);
void printPage(int index, QPainter *painter, QPrinter *printer);
#endif
diff --git a/examples/widgets/painting/gradients/gradients.cpp b/examples/widgets/painting/gradients/gradients.cpp
index f3da5f3de5..ffca9f5560 100644
--- a/examples/widgets/painting/gradients/gradients.cpp
+++ b/examples/widgets/painting/gradients/gradients.cpp
@@ -362,7 +362,7 @@ GradientWidget::GradientWidget(QWidget *parent)
connect(showSourceButton, SIGNAL(clicked()), m_renderer, SLOT(showSource()));
#ifdef QT_OPENGL_SUPPORT
connect(enableOpenGLButton, SIGNAL(clicked(bool)), m_renderer, SLOT(enableOpenGL(bool)));
-#endif
+#endif
connect(whatsThisButton, SIGNAL(clicked(bool)), m_renderer, SLOT(setDescriptionEnabled(bool)));
connect(whatsThisButton, SIGNAL(clicked(bool)),
m_renderer->hoverPoints(), SLOT(setDisabled(bool)));
diff --git a/examples/widgets/painting/pathstroke/pathstroke.cpp b/examples/widgets/painting/pathstroke/pathstroke.cpp
index a8b87f51f4..6807585f57 100644
--- a/examples/widgets/painting/pathstroke/pathstroke.cpp
+++ b/examples/widgets/painting/pathstroke/pathstroke.cpp
@@ -380,7 +380,7 @@ void PathStrokeWidget::setStyle( QStyle * style )
if (m_controls != 0)
{
m_controls->setStyle(style);
-
+
QList<QWidget *> widgets = m_controls->findChildren<QWidget *>();
foreach (QWidget *w, widgets)
w->setStyle(style);
@@ -544,7 +544,7 @@ void PathStrokeRenderer::mousePressEvent(QMouseEvent *e)
setAnimation(false);
mouseMoveEvent(e);
}
-
+
// If we're not running in small screen mode, always assume we're dragging
m_mouseDrag = !m_smallScreen;
m_mousePress = e->pos();
diff --git a/examples/widgets/painting/shared/shared.pri b/examples/widgets/painting/shared/shared.pri
index 1b8be82d03..af027e081a 100644
--- a/examples/widgets/painting/shared/shared.pri
+++ b/examples/widgets/painting/shared/shared.pri
@@ -1,6 +1,6 @@
INCLUDEPATH += $$PWD
-qtHaveModule(opengl) {
+qtHaveModule(opengl)|contains(QT_CONFIG, opengles1)|contains(QT_CONFIG, opengles2) {
DEFINES += QT_OPENGL_SUPPORT
QT += opengl widgets
}
diff --git a/examples/widgets/richtext/orderform/mainwindow.cpp b/examples/widgets/richtext/orderform/mainwindow.cpp
index b99dfd86df..7c0aa666fd 100644
--- a/examples/widgets/richtext/orderform/mainwindow.cpp
+++ b/examples/widgets/richtext/orderform/mainwindow.cpp
@@ -235,7 +235,7 @@ void MainWindow::openDialog()
//! [17]
void MainWindow::printFile()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
QTextEdit *editor = static_cast<QTextEdit*>(letters->currentWidget());
//! [18]
QPrinter printer;
diff --git a/examples/widgets/richtext/textedit/textedit.cpp b/examples/widgets/richtext/textedit/textedit.cpp
index 0398493250..ae2bdedf13 100644
--- a/examples/widgets/richtext/textedit/textedit.cpp
+++ b/examples/widgets/richtext/textedit/textedit.cpp
@@ -197,7 +197,7 @@ void TextEdit::setupFileActions()
#ifndef QT_NO_PRINTER
a = new QAction(QIcon::fromTheme("document-print", QIcon(rsrcPath + "/fileprint.png")),
tr("&Print..."), this);
- a->setPriority(QAction::LowPriority);
+ a->setPriority(QAction::LowPriority);
a->setShortcut(QKeySequence::Print);
connect(a, SIGNAL(triggered()), this, SLOT(filePrint()));
tb->addAction(a);
@@ -511,7 +511,7 @@ bool TextEdit::fileSaveAs()
void TextEdit::filePrint()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
QPrinter printer(QPrinter::HighResolution);
QPrintDialog *dlg = new QPrintDialog(&printer, this);
if (textEdit->textCursor().hasSelection())
@@ -525,7 +525,7 @@ void TextEdit::filePrint()
void TextEdit::filePrintPreview()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
QPrinter printer(QPrinter::HighResolution);
QPrintPreviewDialog preview(&printer, this);
connect(&preview, SIGNAL(paintRequested(QPrinter*)), SLOT(printPreview(QPrinter*)));
diff --git a/examples/widgets/richtext/textedit/textedit.qdoc b/examples/widgets/richtext/textedit/textedit.qdoc
index 1695adfb2e..8e7a0bef24 100644
--- a/examples/widgets/richtext/textedit/textedit.qdoc
+++ b/examples/widgets/richtext/textedit/textedit.qdoc
@@ -31,8 +31,8 @@
\title Text Edit Example
\brief This example displays a text editor with the user interface written
- in pure C++.
-
+ in pure C++.
+
A similar example which uses Qt Designer to produce the user
interface is in the \l {Qt Designer Manual}.
diff --git a/examples/widgets/scroller/graphicsview/main.cpp b/examples/widgets/scroller/graphicsview/main.cpp
index f887aeccce..c17529d7c8 100644
--- a/examples/widgets/scroller/graphicsview/main.cpp
+++ b/examples/widgets/scroller/graphicsview/main.cpp
@@ -204,7 +204,7 @@ public:
Q_UNUSED(option);
Q_UNUSED(widget);
painter->setPen(QPen(QColor(100, 100, 100), 3.0));
- painter->drawRect(QRect(1.5, 1.5, m_size.width() - 3, m_size.height() - 3));
+ painter->drawRect(QRectF(1.5, 1.5, m_size.width() - 3, m_size.height() - 3));
}
QSizeF m_size;
diff --git a/examples/widgets/statemachine/factorial/main.cpp b/examples/widgets/statemachine/factorial/main.cpp
index 9107fea013..1ad2740563 100644
--- a/examples/widgets/statemachine/factorial/main.cpp
+++ b/examples/widgets/statemachine/factorial/main.cpp
@@ -78,7 +78,7 @@ public:
Q_SIGNALS:
void xChanged(int value);
-
+
private:
int m_x;
int m_fac;
diff --git a/examples/widgets/statemachine/rogue/window.cpp b/examples/widgets/statemachine/rogue/window.cpp
index 1e26278051..af8390f928 100644
--- a/examples/widgets/statemachine/rogue/window.cpp
+++ b/examples/widgets/statemachine/rogue/window.cpp
@@ -96,7 +96,7 @@ void Window::paintEvent(QPaintEvent * /* event */)
painter.setPen(Qt::white);
painter.drawText(QPoint(0, yPos), status());
-
+
for (int y = 0; y < HEIGHT; ++y) {
yPos += fontHeight;
xPos = 0;
@@ -184,7 +184,7 @@ void Window::buildMachine()
//![3]
QState *quitState = new QState(machine);
- quitState->assignProperty(this, "status", "Really quit(y/n)?");
+ quitState->assignProperty(this, "status", "Really quit(y/n)?");
QKeyEventTransition *yesTransition = new
QKeyEventTransition(this, QEvent::KeyPress, Qt::Key_Y);
@@ -218,7 +218,7 @@ void Window::movePlayer(Direction direction)
switch (direction) {
case Left:
if (map[pX - 1][pY] != '#')
- --pX;
+ --pX;
break;
case Right:
if (map[pX + 1][pY] != '#')
@@ -231,7 +231,7 @@ void Window::movePlayer(Direction direction)
case Down:
if (map[pX][pY + 1] != '#')
++pY;
- break;
+ break;
}
repaint();
}
diff --git a/examples/widgets/tools/completer/mainwindow.cpp b/examples/widgets/tools/completer/mainwindow.cpp
index 6730193928..c299d08c17 100644
--- a/examples/widgets/tools/completer/mainwindow.cpp
+++ b/examples/widgets/tools/completer/mainwindow.cpp
@@ -100,7 +100,7 @@ MainWindow::MainWindow(QWidget *parent)
//! [3]
lineEdit = new QLineEdit;
-
+
QGridLayout *layout = new QGridLayout;
layout->addWidget(modelLabel, 0, 0); layout->addWidget(modelCombo, 0, 1);
layout->addWidget(modeLabel, 1, 0); layout->addWidget(modeCombo, 1, 1);
diff --git a/examples/widgets/tools/customcompleter/mainwindow.cpp b/examples/widgets/tools/customcompleter/mainwindow.cpp
index 54033b5dd3..20b5d509ff 100644
--- a/examples/widgets/tools/customcompleter/mainwindow.cpp
+++ b/examples/widgets/tools/customcompleter/mainwindow.cpp
@@ -93,7 +93,7 @@ QAbstractItemModel *MainWindow::modelFromFile(const QString& fileName)
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
#endif
QStringList words;
-
+
while (!file.atEnd()) {
QByteArray line = file.readLine();
if (!line.isEmpty())
diff --git a/examples/widgets/tools/customcompleter/textedit.cpp b/examples/widgets/tools/customcompleter/textedit.cpp
index 1fafdcd04d..9b0c1b9c97 100644
--- a/examples/widgets/tools/customcompleter/textedit.cpp
+++ b/examples/widgets/tools/customcompleter/textedit.cpp
@@ -53,7 +53,7 @@ TextEdit::TextEdit(QWidget *parent)
: QTextEdit(parent), c(0)
{
setPlainText(tr("This TextEdit provides autocompletions for words that have more than"
- " 3 characters. You can trigger autocompletion using ") +
+ " 3 characters. You can trigger autocompletion using ") +
QKeySequence("Ctrl+E").toString(QKeySequence::NativeText));
}
//! [0]
@@ -133,7 +133,7 @@ void TextEdit::keyPressEvent(QKeyEvent *e)
case Qt::Key_Escape:
case Qt::Key_Tab:
case Qt::Key_Backtab:
- e->ignore();
+ e->ignore();
return; // let the completer do default behavior
default:
break;
@@ -154,7 +154,7 @@ void TextEdit::keyPressEvent(QKeyEvent *e)
bool hasModifier = (e->modifiers() != Qt::NoModifier) && !ctrlOrShift;
QString completionPrefix = textUnderCursor();
- if (!isShortcut && (hasModifier || e->text().isEmpty()|| completionPrefix.length() < 3
+ if (!isShortcut && (hasModifier || e->text().isEmpty()|| completionPrefix.length() < 3
|| eow.contains(e->text().right(1)))) {
c->popup()->hide();
return;
diff --git a/examples/widgets/tools/i18n/languagechooser.cpp b/examples/widgets/tools/i18n/languagechooser.cpp
index 14c66a079b..15cc906fb8 100644
--- a/examples/widgets/tools/i18n/languagechooser.cpp
+++ b/examples/widgets/tools/i18n/languagechooser.cpp
@@ -49,7 +49,7 @@ extern void qt_mac_set_menubar_merge(bool merge);
QT_END_NAMESPACE
#endif
-LanguageChooser::LanguageChooser(QWidget *parent)
+LanguageChooser::LanguageChooser(const QString& defaultLang, QWidget *parent)
: QDialog(parent, Qt::WindowStaysOnTopHint)
{
groupBox = new QGroupBox("Languages");
@@ -61,6 +61,8 @@ LanguageChooser::LanguageChooser(QWidget *parent)
QCheckBox *checkBox = new QCheckBox(languageName(qmFiles[i]));
qmFileForCheckBoxMap.insert(checkBox, qmFiles[i]);
connect(checkBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxToggled()));
+ if (languageMatch(defaultLang, qmFiles[i]))
+ checkBox->setCheckState(Qt::Checked);
groupBoxLayout->addWidget(checkBox, i / 2, i % 2);
}
groupBox->setLayout(groupBoxLayout);
@@ -87,6 +89,14 @@ LanguageChooser::LanguageChooser(QWidget *parent)
setWindowTitle("I18N");
}
+bool LanguageChooser::languageMatch(const QString& lang, const QString& qmFile)
+{
+ //qmFile: i18n_xx.qm
+ const QString prefix = "i18n_";
+ const int langTokenLength = 2; /*FIXME: is checking two chars enough?*/
+ return qmFile.midRef(qmFile.indexOf(prefix) + prefix.length(), langTokenLength) == lang.leftRef(langTokenLength);
+}
+
bool LanguageChooser::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::Close) {
diff --git a/examples/widgets/tools/i18n/languagechooser.h b/examples/widgets/tools/i18n/languagechooser.h
index 13a7c3570a..a2282cdaf5 100644
--- a/examples/widgets/tools/i18n/languagechooser.h
+++ b/examples/widgets/tools/i18n/languagechooser.h
@@ -58,7 +58,7 @@ class LanguageChooser : public QDialog
Q_OBJECT
public:
- LanguageChooser(QWidget *parent = 0);
+ explicit LanguageChooser(const QString& defaultLang = QString(), QWidget *parent = 0);
protected:
bool eventFilter(QObject *object, QEvent *event);
@@ -73,6 +73,7 @@ private:
QStringList findQmFiles();
QString languageName(const QString &qmFile);
QColor colorForLanguage(const QString &language);
+ static bool languageMatch(const QString& lang, const QString& qmFile);
QGroupBox *groupBox;
QDialogButtonBox *buttonBox;
diff --git a/examples/widgets/tools/i18n/main.cpp b/examples/widgets/tools/i18n/main.cpp
index 9d78876460..59e3081c03 100644
--- a/examples/widgets/tools/i18n/main.cpp
+++ b/examples/widgets/tools/i18n/main.cpp
@@ -39,7 +39,7 @@
****************************************************************************/
#include <QApplication>
-
+#include <QLocale>
#include "languagechooser.h"
#include "mainwindow.h"
@@ -48,7 +48,7 @@ int main(int argc, char *argv[])
Q_INIT_RESOURCE(i18n);
QApplication app(argc, argv);
- LanguageChooser chooser;
+ LanguageChooser chooser(QLocale::system().name());
chooser.show();
return app.exec();
}
diff --git a/examples/widgets/tools/plugandpaint/mainwindow.cpp b/examples/widgets/tools/plugandpaint/mainwindow.cpp
index cc0ce48be8..fdd3689a1a 100644
--- a/examples/widgets/tools/plugandpaint/mainwindow.cpp
+++ b/examples/widgets/tools/plugandpaint/mainwindow.cpp
@@ -81,7 +81,7 @@ MainWindow::MainWindow() :
void MainWindow::open()
{
const QString fileName = QFileDialog::getOpenFileName(this,
- tr("Open File"),
+ tr("Open File"),
QDir::currentPath());
if (!fileName.isEmpty()) {
if (!paintArea->openImage(fileName)) {
diff --git a/examples/widgets/tools/plugandpaint/plugindialog.cpp b/examples/widgets/tools/plugandpaint/plugindialog.cpp
index 2c19d32584..19d2a103fa 100644
--- a/examples/widgets/tools/plugandpaint/plugindialog.cpp
+++ b/examples/widgets/tools/plugandpaint/plugindialog.cpp
@@ -58,7 +58,7 @@ PluginDialog::PluginDialog(const QString &path, const QStringList &fileNames,
QDialog(parent),
label(new QLabel),
treeWidget(new QTreeWidget),
- okButton(new QPushButton(tr("OK")))
+ okButton(new QPushButton(tr("OK")))
{
treeWidget->setAlternatingRowColors(false);
treeWidget->setSelectionMode(QAbstractItemView::NoSelection);
diff --git a/examples/widgets/tools/undoframework/diagramscene.cpp b/examples/widgets/tools/undoframework/diagramscene.cpp
index bef3b89df0..1083cba5db 100644
--- a/examples/widgets/tools/undoframework/diagramscene.cpp
+++ b/examples/widgets/tools/undoframework/diagramscene.cpp
@@ -59,8 +59,8 @@ void DiagramScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
if (movingItem != 0 && event->button() == Qt::LeftButton) {
oldPos = movingItem->pos();
}
-
- clearSelection();
+
+ clearSelection();
QGraphicsScene::mousePressEvent(event);
}
diff --git a/examples/widgets/tutorials/addressbook-fr/part1/addressbook.cpp b/examples/widgets/tutorials/addressbook-fr/part1/addressbook.cpp
index 4e8c95635b..60acd6bb27 100644
--- a/examples/widgets/tutorials/addressbook-fr/part1/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook-fr/part1/addressbook.cpp
@@ -60,7 +60,7 @@ AddressBook::AddressBook(QWidget *parent)
mainLayout->addWidget(addressText, 1, 1);
//! [layout]
-//![setting the layout]
+//![setting the layout]
setLayout(mainLayout);
setWindowTitle(tr("Simple Address Book"));
}
diff --git a/examples/widgets/tutorials/addressbook-fr/part2/addressbook.cpp b/examples/widgets/tutorials/addressbook-fr/part2/addressbook.cpp
index bb221d2222..d88716a8c8 100644
--- a/examples/widgets/tutorials/addressbook-fr/part2/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook-fr/part2/addressbook.cpp
@@ -51,10 +51,10 @@ AddressBook::AddressBook(QWidget *parent)
//! [setting readonly 1]
QLabel *addressLabel = new QLabel(tr("Address:"));
addressText = new QTextEdit;
-//! [setting readonly 2]
+//! [setting readonly 2]
addressText->setReadOnly(true);
//! [setting readonly 2]
-
+
//! [pushbutton declaration]
addButton = new QPushButton(tr("&Add"));
addButton->show();
@@ -94,7 +94,7 @@ void AddressBook::addContact()
nameLine->clear();
addressText->clear();
-
+
nameLine->setReadOnly(false);
nameLine->setFocus(Qt::OtherFocusReason);
addressText->setReadOnly(false);
@@ -110,7 +110,7 @@ void AddressBook::submitContact()
{
QString name = nameLine->text();
QString address = addressText->toPlainText();
-
+
if ( name.isEmpty()|| address.isEmpty()) {
QMessageBox::information(this, tr("Empty Field"),
tr("Please enter a name and address."));
@@ -152,6 +152,6 @@ void AddressBook::cancel()
addButton->setEnabled(true);
submitButton->hide();
- cancelButton->hide();
+ cancelButton->hide();
}
//! [cancel]
diff --git a/examples/widgets/tutorials/addressbook-fr/part3/addressbook.cpp b/examples/widgets/tutorials/addressbook-fr/part3/addressbook.cpp
index 09b1e06bfe..86ff58d015 100644
--- a/examples/widgets/tutorials/addressbook-fr/part3/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook-fr/part3/addressbook.cpp
@@ -51,7 +51,7 @@ AddressBook::AddressBook(QWidget *parent)
QLabel *addressLabel = new QLabel(tr("Address:"));
addressText = new QTextEdit;
addressText->setReadOnly(true);
-
+
addButton = new QPushButton(tr("&Add"));
addButton->show();
submitButton = new QPushButton(tr("&Submit"));
@@ -68,7 +68,7 @@ AddressBook::AddressBook(QWidget *parent)
connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
-//! [connecting navigation signals]
+//! [connecting navigation signals]
connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
//! [connecting navigation signals]
@@ -107,7 +107,7 @@ void AddressBook::addContact()
nameLine->setReadOnly(false);
nameLine->setFocus(Qt::OtherFocusReason);
addressText->setReadOnly(false);
-
+
addButton->setEnabled(false);
//! [disabling navigation]
nextButton->setEnabled(false);
@@ -121,7 +121,7 @@ void AddressBook::submitContact()
{
QString name = nameLine->text();
QString address = addressText->toPlainText();
-
+
if (name.isEmpty() || address.isEmpty()) {
QMessageBox::information(this, tr("Empty Field"),
tr("Please enter a name and address."));
@@ -159,20 +159,20 @@ void AddressBook::cancel()
{
nameLine->setText(oldName);
addressText->setText(oldAddress);
-
+
if (contacts.isEmpty()) {
nameLine->clear();
addressText->clear();
}
-
+
nameLine->setReadOnly(true);
addressText->setReadOnly(true);
addButton->setEnabled(true);
-
+
int number = contacts.size();
nextButton->setEnabled(number > 1);
previousButton->setEnabled(number > 1);
-
+
submitButton->hide();
cancelButton->hide();
}
diff --git a/examples/widgets/tutorials/addressbook-fr/part3/addressbook.h b/examples/widgets/tutorials/addressbook-fr/part3/addressbook.h
index 2458645ab5..3613fedb34 100644
--- a/examples/widgets/tutorials/addressbook-fr/part3/addressbook.h
+++ b/examples/widgets/tutorials/addressbook-fr/part3/addressbook.h
@@ -65,16 +65,16 @@ public slots:
//! [navigation functions]
void next();
void previous();
-//! [navigation functions]
+//! [navigation functions]
private:
QPushButton *addButton;
QPushButton *submitButton;
QPushButton *cancelButton;
-//! [navigation pushbuttons]
+//! [navigation pushbuttons]
QPushButton *nextButton;
QPushButton *previousButton;
-//! [navigation pushbuttons]
+//! [navigation pushbuttons]
QLineEdit *nameLine;
QTextEdit *addressText;
diff --git a/examples/widgets/tutorials/addressbook-fr/part4/addressbook.cpp b/examples/widgets/tutorials/addressbook-fr/part4/addressbook.cpp
index 2d158f3f17..70f5d110db 100644
--- a/examples/widgets/tutorials/addressbook-fr/part4/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook-fr/part4/addressbook.cpp
@@ -53,17 +53,17 @@ AddressBook::AddressBook(QWidget *parent)
addressText->setReadOnly(true);
addButton = new QPushButton(tr("&Add"));
-//! [edit and remove buttons]
+//! [edit and remove buttons]
editButton = new QPushButton(tr("&Edit"));
editButton->setEnabled(false);
removeButton = new QPushButton(tr("&Remove"));
removeButton->setEnabled(false);
-//! [edit and remove buttons]
+//! [edit and remove buttons]
submitButton = new QPushButton(tr("&Submit"));
submitButton->hide();
cancelButton = new QPushButton(tr("&Cancel"));
cancelButton->hide();
-
+
nextButton = new QPushButton(tr("&Next"));
nextButton->setEnabled(false);
previousButton = new QPushButton(tr("&Previous"));
@@ -71,20 +71,20 @@ AddressBook::AddressBook(QWidget *parent)
connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));
-//! [connecting edit and remove]
+//! [connecting edit and remove]
connect(editButton, SIGNAL(clicked()), this, SLOT(editContact()));
connect(removeButton, SIGNAL(clicked()), this, SLOT(removeContact()));
-//! [connecting edit and remove]
+//! [connecting edit and remove]
connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
QVBoxLayout *buttonLayout1 = new QVBoxLayout;
buttonLayout1->addWidget(addButton);
-//! [adding edit and remove to the layout]
+//! [adding edit and remove to the layout]
buttonLayout1->addWidget(editButton);
buttonLayout1->addWidget(removeButton);
-//! [adding edit and remove to the layout]
+//! [adding edit and remove to the layout]
buttonLayout1->addWidget(submitButton);
buttonLayout1->addWidget(cancelButton);
buttonLayout1->addStretch();
@@ -138,7 +138,7 @@ void AddressBook::submitContact()
}
//! [submitContact() function part1]
if (currentMode == AddingMode) {
-
+
if (!contacts.contains(name)) {
contacts.insert(name, address);
QMessageBox::information(this, tr("Add Successful"),
@@ -150,7 +150,7 @@ void AddressBook::submitContact()
//! [submitContact() function part1]
//! [submitContact() function part2]
} else if (currentMode == EditingMode) {
-
+
if (oldName != name) {
if (!contacts.contains(name)) {
QMessageBox::information(this, tr("Edit Successful"),
@@ -164,7 +164,7 @@ void AddressBook::submitContact()
} else if (oldAddress != address) {
QMessageBox::information(this, tr("Edit Successful"),
tr("\"%1\" has been edited in your address book.").arg(name));
- contacts[name] = address;
+ contacts[name] = address;
}
}
@@ -192,7 +192,7 @@ void AddressBook::removeContact()
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes) {
-
+
previous();
contacts.remove(name);
@@ -243,7 +243,7 @@ void AddressBook::updateInterface(Mode mode)
currentMode = mode;
switch (currentMode) {
-
+
case AddingMode:
case EditingMode:
diff --git a/examples/widgets/tutorials/addressbook-fr/part4/addressbook.h b/examples/widgets/tutorials/addressbook-fr/part4/addressbook.h
index ff8c4f0318..6430ac3413 100644
--- a/examples/widgets/tutorials/addressbook-fr/part4/addressbook.h
+++ b/examples/widgets/tutorials/addressbook-fr/part4/addressbook.h
@@ -77,10 +77,10 @@ private:
void updateInterface(Mode mode);
//! [updateInterface() declaration]
QPushButton *addButton;
-//! [buttons declaration]
+//! [buttons declaration]
QPushButton *editButton;
QPushButton *removeButton;
-//! [buttons declaration]
+//! [buttons declaration]
QPushButton *submitButton;
QPushButton *cancelButton;
QPushButton *nextButton;
@@ -91,9 +91,9 @@ private:
QMap<QString, QString> contacts;
QString oldName;
QString oldAddress;
-//! [mode declaration]
+//! [mode declaration]
Mode currentMode;
-//! [mode declaration]
+//! [mode declaration]
};
#endif
diff --git a/examples/widgets/tutorials/addressbook-fr/part5/addressbook.cpp b/examples/widgets/tutorials/addressbook-fr/part5/addressbook.cpp
index 02f4788537..33af5f1e4e 100644
--- a/examples/widgets/tutorials/addressbook-fr/part5/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook-fr/part5/addressbook.cpp
@@ -81,19 +81,19 @@ AddressBook::AddressBook(QWidget *parent)
connect(editButton, SIGNAL(clicked()), this, SLOT(editContact()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
connect(removeButton, SIGNAL(clicked()), this, SLOT(removeContact()));
-//! [signals and slots for find]
+//! [signals and slots for find]
connect(findButton, SIGNAL(clicked()), this, SLOT(findContact()));
-//! [signals and slots for find]
+//! [signals and slots for find]
connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
-
+
QVBoxLayout *buttonLayout1 = new QVBoxLayout;
buttonLayout1->addWidget(addButton);
buttonLayout1->addWidget(editButton);
buttonLayout1->addWidget(removeButton);
-//! [adding findButton to layout]
+//! [adding findButton to layout]
buttonLayout1->addWidget(findButton);
-//! [adding findButton to layout]
+//! [adding findButton to layout]
buttonLayout1->addWidget(submitButton);
buttonLayout1->addWidget(cancelButton);
buttonLayout1->addStretch();
@@ -145,7 +145,7 @@ void AddressBook::submitContact()
}
if (currentMode == AddingMode) {
-
+
if (!contacts.contains(name)) {
contacts.insert(name, address);
QMessageBox::information(this, tr("Add Successful"),
@@ -155,7 +155,7 @@ void AddressBook::submitContact()
tr("Sorry, \"%1\" is already in your address book.").arg(name));
}
} else if (currentMode == EditingMode) {
-
+
if (oldName != name) {
if (!contacts.contains(name)) {
QMessageBox::information(this, tr("Edit Successful"),
@@ -196,7 +196,7 @@ void AddressBook::removeContact()
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes) {
-
+
previous();
contacts.remove(name);
@@ -241,7 +241,7 @@ void AddressBook::previous()
nameLine->setText(i.key());
addressText->setText(i.value());
}
-//! [findContact() function]
+//! [findContact() function]
void AddressBook::findContact()
{
dialog->show();
@@ -261,7 +261,7 @@ void AddressBook::findContact()
updateInterface(NavigationMode);
}
-//! [findContact() function]
+//! [findContact() function]
void AddressBook::updateInterface(Mode mode)
{
@@ -288,7 +288,7 @@ void AddressBook::updateInterface(Mode mode)
break;
case NavigationMode:
-
+
if (contacts.isEmpty()) {
nameLine->clear();
addressText->clear();
diff --git a/examples/widgets/tutorials/addressbook-fr/part5/addressbook.h b/examples/widgets/tutorials/addressbook-fr/part5/addressbook.h
index 5e2c18e91a..f8a53304ee 100644
--- a/examples/widgets/tutorials/addressbook-fr/part5/addressbook.h
+++ b/examples/widgets/tutorials/addressbook-fr/part5/addressbook.h
@@ -68,9 +68,9 @@ public slots:
void submitContact();
void cancel();
void removeContact();
-//! [findContact() declaration]
+//! [findContact() declaration]
void findContact();
-//! [findContact() declaration]
+//! [findContact() declaration]
void next();
void previous();
@@ -80,9 +80,9 @@ private:
QPushButton *addButton;
QPushButton *editButton;
QPushButton *removeButton;
-//! [findButton declaration]
+//! [findButton declaration]
QPushButton *findButton;
-//! [findButton declaration]
+//! [findButton declaration]
QPushButton *submitButton;
QPushButton *cancelButton;
QPushButton *nextButton;
@@ -91,9 +91,9 @@ private:
QTextEdit *addressText;
QMap<QString, QString> contacts;
-//! [FindDialog declaration]
+//! [FindDialog declaration]
FindDialog *dialog;
-//! [FindDialog declaration]
+//! [FindDialog declaration]
QString oldName;
QString oldAddress;
Mode currentMode;
diff --git a/examples/widgets/tutorials/addressbook-fr/part6/addressbook.cpp b/examples/widgets/tutorials/addressbook-fr/part6/addressbook.cpp
index e8caa628a5..e81c959c2c 100644
--- a/examples/widgets/tutorials/addressbook-fr/part6/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook-fr/part6/addressbook.cpp
@@ -71,9 +71,9 @@ AddressBook::AddressBook(QWidget *parent)
previousButton->setEnabled(false);
loadButton = new QPushButton(tr("&Load..."));
-//! [tooltip 1]
+//! [tooltip 1]
loadButton->setToolTip(tr("Load contacts from a file"));
-//! [tooltip 1]
+//! [tooltip 1]
saveButton = new QPushButton(tr("Sa&ve..."));
//! [tooltip 2]
saveButton->setToolTip(tr("Save contacts to a file"));
@@ -92,7 +92,7 @@ AddressBook::AddressBook(QWidget *parent)
connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
connect(loadButton, SIGNAL(clicked()), this, SLOT(loadFromFile()));
connect(saveButton, SIGNAL(clicked()), this, SLOT(saveToFile()));
-
+
QVBoxLayout *buttonLayout1 = new QVBoxLayout;
buttonLayout1->addWidget(addButton);
buttonLayout1->addWidget(editButton);
@@ -151,7 +151,7 @@ void AddressBook::submitContact()
}
if (currentMode == AddingMode) {
-
+
if (!contacts.contains(name)) {
contacts.insert(name, address);
QMessageBox::information(this, tr("Add Successful"),
@@ -161,7 +161,7 @@ void AddressBook::submitContact()
tr("Sorry, \"%1\" is already in your address book.").arg(name));
}
} else if (currentMode == EditingMode) {
-
+
if (oldName != name) {
if (!contacts.contains(name)) {
QMessageBox::information(this, tr("Edit Successful"),
@@ -202,7 +202,7 @@ void AddressBook::removeContact()
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes) {
-
+
previous();
contacts.remove(name);
@@ -296,7 +296,7 @@ void AddressBook::updateInterface(Mode mode)
break;
case NavigationMode:
-
+
if (contacts.isEmpty()) {
nameLine->clear();
addressText->clear();
@@ -341,12 +341,12 @@ void AddressBook::saveToFile()
return;
}
-//! [saveToFile() function part2]
+//! [saveToFile() function part2]
//! [saveToFile() function part3]
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_5);
out << contacts;
- }
+ }
}
//! [saveToFile() function part3]
@@ -362,15 +362,15 @@ void AddressBook::loadFromFile()
if (fileName.isEmpty())
return;
else {
-
+
QFile file(fileName);
-
+
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
return;
}
-
+
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_5);
contacts.empty(); // empty existing contacts
diff --git a/examples/widgets/tutorials/addressbook-fr/part6/addressbook.h b/examples/widgets/tutorials/addressbook-fr/part6/addressbook.h
index 99dfd1e404..ce2691ccad 100644
--- a/examples/widgets/tutorials/addressbook-fr/part6/addressbook.h
+++ b/examples/widgets/tutorials/addressbook-fr/part6/addressbook.h
@@ -70,10 +70,10 @@ public slots:
void findContact();
void next();
void previous();
-//! [save and load functions declaration]
+//! [save and load functions declaration]
void saveToFile();
void loadFromFile();
-//! [save and load functions declaration]
+//! [save and load functions declaration]
private:
void updateInterface(Mode mode);
@@ -86,10 +86,10 @@ private:
QPushButton *cancelButton;
QPushButton *nextButton;
QPushButton *previousButton;
-//! [save and load buttons declaration]
+//! [save and load buttons declaration]
QPushButton *loadButton;
QPushButton *saveButton;
-//! [save and load buttons declaration]
+//! [save and load buttons declaration]
QLineEdit *nameLine;
QTextEdit *addressText;
diff --git a/examples/widgets/tutorials/addressbook-fr/part7/addressbook.cpp b/examples/widgets/tutorials/addressbook-fr/part7/addressbook.cpp
index a91a3bbc12..a0780ae78a 100644
--- a/examples/widgets/tutorials/addressbook-fr/part7/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook-fr/part7/addressbook.cpp
@@ -93,7 +93,7 @@ AddressBook::AddressBook(QWidget *parent)
connect(loadButton, SIGNAL(clicked()), this, SLOT(loadFromFile()));
connect(saveButton, SIGNAL(clicked()), this, SLOT(saveToFile()));
connect(exportButton, SIGNAL(clicked()), this, SLOT(exportAsVCard()));
-
+
QVBoxLayout *buttonLayout1 = new QVBoxLayout;
buttonLayout1->addWidget(addButton);
buttonLayout1->addWidget(editButton);
@@ -153,7 +153,7 @@ void AddressBook::submitContact()
}
if (currentMode == AddingMode) {
-
+
if (!contacts.contains(name)) {
contacts.insert(name, address);
QMessageBox::information(this, tr("Add Successful"),
@@ -163,7 +163,7 @@ void AddressBook::submitContact()
tr("Sorry, \"%1\" is already in your address book.").arg(name));
}
} else if (currentMode == EditingMode) {
-
+
if (oldName != name) {
if (!contacts.contains(name)) {
QMessageBox::information(this, tr("Edit Successful"),
@@ -204,7 +204,7 @@ void AddressBook::removeContact()
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes) {
-
+
previous();
contacts.remove(name);
@@ -298,7 +298,7 @@ void AddressBook::updateInterface(Mode mode)
break;
case NavigationMode:
-
+
if (contacts.isEmpty()) {
nameLine->clear();
addressText->clear();
@@ -331,7 +331,7 @@ void AddressBook::saveToFile()
QString fileName = QFileDialog::getSaveFileName(this,
tr("Save Address Book"), "",
tr("Address Book (*.abk);;All Files (*)"));
-
+
if (fileName.isEmpty())
return;
else {
@@ -404,14 +404,14 @@ void AddressBook::exportAsVCard()
QString fileName = QFileDialog::getSaveFileName(this,
tr("Export Contact"), "",
tr("vCard Files (*.vcf);;All Files (*)"));
-
+
if (fileName.isEmpty())
return;
QFile file(fileName);
//! [export function part1]
-
-//! [export function part2]
+
+//! [export function part2]
if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
@@ -425,12 +425,12 @@ void AddressBook::exportAsVCard()
out << "BEGIN:VCARD" << "\n";
out << "VERSION:2.1" << "\n";
out << "N:" << lastName << ";" << firstName << "\n";
-
- if (!nameList.isEmpty())
+
+ if (!nameList.isEmpty())
out << "FN:" << nameList.join(' ') << "\n";
else
out << "FN:" << firstName << "\n";
-//! [export function part3]
+//! [export function part3]
//! [export function part4]
address.replace(";", "\\;", Qt::CaseInsensitive);
diff --git a/examples/widgets/tutorials/addressbook-fr/part7/addressbook.h b/examples/widgets/tutorials/addressbook-fr/part7/addressbook.h
index a34cf24a23..d672c7a85b 100644
--- a/examples/widgets/tutorials/addressbook-fr/part7/addressbook.h
+++ b/examples/widgets/tutorials/addressbook-fr/part7/addressbook.h
@@ -74,7 +74,7 @@ public slots:
void loadFromFile();
//! [exportAsVCard() declaration]
void exportAsVCard();
-//! [exportAsVCard() declaration]
+//! [exportAsVCard() declaration]
private:
void updateInterface(Mode mode);
@@ -89,9 +89,9 @@ private:
QPushButton *previousButton;
QPushButton *loadButton;
QPushButton *saveButton;
-//! [exportButton declaration]
+//! [exportButton declaration]
QPushButton *exportButton;
-//! [exportButton declaration]
+//! [exportButton declaration]
QLineEdit *nameLine;
QTextEdit *addressText;
diff --git a/examples/widgets/tutorials/addressbook/part1/addressbook.cpp b/examples/widgets/tutorials/addressbook/part1/addressbook.cpp
index 4e8c95635b..60acd6bb27 100644
--- a/examples/widgets/tutorials/addressbook/part1/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook/part1/addressbook.cpp
@@ -60,7 +60,7 @@ AddressBook::AddressBook(QWidget *parent)
mainLayout->addWidget(addressText, 1, 1);
//! [layout]
-//![setting the layout]
+//![setting the layout]
setLayout(mainLayout);
setWindowTitle(tr("Simple Address Book"));
}
diff --git a/examples/widgets/tutorials/addressbook/part2/addressbook.cpp b/examples/widgets/tutorials/addressbook/part2/addressbook.cpp
index e6f3409efc..6fd5d03fea 100644
--- a/examples/widgets/tutorials/addressbook/part2/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook/part2/addressbook.cpp
@@ -51,10 +51,10 @@ AddressBook::AddressBook(QWidget *parent)
//! [setting readonly 1]
QLabel *addressLabel = new QLabel(tr("Address:"));
addressText = new QTextEdit;
-//! [setting readonly 2]
+//! [setting readonly 2]
addressText->setReadOnly(true);
//! [setting readonly 2]
-
+
//! [pushbutton declaration]
addButton = new QPushButton(tr("&Add"));
addButton->show();
@@ -94,7 +94,7 @@ void AddressBook::addContact()
nameLine->clear();
addressText->clear();
-
+
nameLine->setReadOnly(false);
nameLine->setFocus(Qt::OtherFocusReason);
addressText->setReadOnly(false);
@@ -110,7 +110,7 @@ void AddressBook::submitContact()
{
QString name = nameLine->text();
QString address = addressText->toPlainText();
-
+
if (name.isEmpty() || address.isEmpty()) {
QMessageBox::information(this, tr("Empty Field"),
tr("Please enter a name and address."));
@@ -152,6 +152,6 @@ void AddressBook::cancel()
addButton->setEnabled(true);
submitButton->hide();
- cancelButton->hide();
+ cancelButton->hide();
}
//! [cancel]
diff --git a/examples/widgets/tutorials/addressbook/part3/addressbook.cpp b/examples/widgets/tutorials/addressbook/part3/addressbook.cpp
index 61c331d1f5..bcf3f63430 100644
--- a/examples/widgets/tutorials/addressbook/part3/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook/part3/addressbook.cpp
@@ -51,7 +51,7 @@ AddressBook::AddressBook(QWidget *parent)
QLabel *addressLabel = new QLabel(tr("Address:"));
addressText = new QTextEdit;
addressText->setReadOnly(true);
-
+
addButton = new QPushButton(tr("&Add"));
addButton->show();
submitButton = new QPushButton(tr("&Submit"));
@@ -68,7 +68,7 @@ AddressBook::AddressBook(QWidget *parent)
connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
-//! [connecting navigation signals]
+//! [connecting navigation signals]
connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
//! [connecting navigation signals]
@@ -107,7 +107,7 @@ void AddressBook::addContact()
nameLine->setReadOnly(false);
nameLine->setFocus(Qt::OtherFocusReason);
addressText->setReadOnly(false);
-
+
addButton->setEnabled(false);
//! [disabling navigation]
nextButton->setEnabled(false);
@@ -121,7 +121,7 @@ void AddressBook::submitContact()
{
QString name = nameLine->text();
QString address = addressText->toPlainText();
-
+
if (name.isEmpty() || address.isEmpty()) {
QMessageBox::information(this, tr("Empty Field"),
tr("Please enter a name and address."));
@@ -159,20 +159,20 @@ void AddressBook::cancel()
{
nameLine->setText(oldName);
addressText->setText(oldAddress);
-
+
if (contacts.isEmpty()) {
nameLine->clear();
addressText->clear();
}
-
+
nameLine->setReadOnly(true);
addressText->setReadOnly(true);
addButton->setEnabled(true);
-
+
int number = contacts.size();
nextButton->setEnabled(number > 1);
previousButton->setEnabled(number > 1);
-
+
submitButton->hide();
cancelButton->hide();
}
diff --git a/examples/widgets/tutorials/addressbook/part3/addressbook.h b/examples/widgets/tutorials/addressbook/part3/addressbook.h
index 2458645ab5..3613fedb34 100644
--- a/examples/widgets/tutorials/addressbook/part3/addressbook.h
+++ b/examples/widgets/tutorials/addressbook/part3/addressbook.h
@@ -65,16 +65,16 @@ public slots:
//! [navigation functions]
void next();
void previous();
-//! [navigation functions]
+//! [navigation functions]
private:
QPushButton *addButton;
QPushButton *submitButton;
QPushButton *cancelButton;
-//! [navigation pushbuttons]
+//! [navigation pushbuttons]
QPushButton *nextButton;
QPushButton *previousButton;
-//! [navigation pushbuttons]
+//! [navigation pushbuttons]
QLineEdit *nameLine;
QTextEdit *addressText;
diff --git a/examples/widgets/tutorials/addressbook/part4/addressbook.cpp b/examples/widgets/tutorials/addressbook/part4/addressbook.cpp
index 6b3731b5f6..66764a2815 100644
--- a/examples/widgets/tutorials/addressbook/part4/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook/part4/addressbook.cpp
@@ -53,17 +53,17 @@ AddressBook::AddressBook(QWidget *parent)
addressText->setReadOnly(true);
addButton = new QPushButton(tr("&Add"));
-//! [edit and remove buttons]
+//! [edit and remove buttons]
editButton = new QPushButton(tr("&Edit"));
editButton->setEnabled(false);
removeButton = new QPushButton(tr("&Remove"));
removeButton->setEnabled(false);
-//! [edit and remove buttons]
+//! [edit and remove buttons]
submitButton = new QPushButton(tr("&Submit"));
submitButton->hide();
cancelButton = new QPushButton(tr("&Cancel"));
cancelButton->hide();
-
+
nextButton = new QPushButton(tr("&Next"));
nextButton->setEnabled(false);
previousButton = new QPushButton(tr("&Previous"));
@@ -71,20 +71,20 @@ AddressBook::AddressBook(QWidget *parent)
connect(addButton, SIGNAL(clicked()), this, SLOT(addContact()));
connect(submitButton, SIGNAL(clicked()), this, SLOT(submitContact()));
-//! [connecting edit and remove]
+//! [connecting edit and remove]
connect(editButton, SIGNAL(clicked()), this, SLOT(editContact()));
connect(removeButton, SIGNAL(clicked()), this, SLOT(removeContact()));
-//! [connecting edit and remove]
+//! [connecting edit and remove]
connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
QVBoxLayout *buttonLayout1 = new QVBoxLayout;
buttonLayout1->addWidget(addButton);
-//! [adding edit and remove to the layout]
+//! [adding edit and remove to the layout]
buttonLayout1->addWidget(editButton);
buttonLayout1->addWidget(removeButton);
-//! [adding edit and remove to the layout]
+//! [adding edit and remove to the layout]
buttonLayout1->addWidget(submitButton);
buttonLayout1->addWidget(cancelButton);
buttonLayout1->addStretch();
@@ -138,7 +138,7 @@ void AddressBook::submitContact()
}
//! [submitContact() function part1]
if (currentMode == AddingMode) {
-
+
if (!contacts.contains(name)) {
contacts.insert(name, address);
QMessageBox::information(this, tr("Add Successful"),
@@ -150,7 +150,7 @@ void AddressBook::submitContact()
//! [submitContact() function part1]
//! [submitContact() function part2]
} else if (currentMode == EditingMode) {
-
+
if (oldName != name) {
if (!contacts.contains(name)) {
QMessageBox::information(this, tr("Edit Successful"),
@@ -164,7 +164,7 @@ void AddressBook::submitContact()
} else if (oldAddress != address) {
QMessageBox::information(this, tr("Edit Successful"),
tr("\"%1\" has been edited in your address book.").arg(name));
- contacts[name] = address;
+ contacts[name] = address;
}
}
@@ -192,7 +192,7 @@ void AddressBook::removeContact()
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes) {
-
+
previous();
contacts.remove(name);
@@ -243,7 +243,7 @@ void AddressBook::updateInterface(Mode mode)
currentMode = mode;
switch (currentMode) {
-
+
case AddingMode:
case EditingMode:
diff --git a/examples/widgets/tutorials/addressbook/part4/addressbook.h b/examples/widgets/tutorials/addressbook/part4/addressbook.h
index ff8c4f0318..6430ac3413 100644
--- a/examples/widgets/tutorials/addressbook/part4/addressbook.h
+++ b/examples/widgets/tutorials/addressbook/part4/addressbook.h
@@ -77,10 +77,10 @@ private:
void updateInterface(Mode mode);
//! [updateInterface() declaration]
QPushButton *addButton;
-//! [buttons declaration]
+//! [buttons declaration]
QPushButton *editButton;
QPushButton *removeButton;
-//! [buttons declaration]
+//! [buttons declaration]
QPushButton *submitButton;
QPushButton *cancelButton;
QPushButton *nextButton;
@@ -91,9 +91,9 @@ private:
QMap<QString, QString> contacts;
QString oldName;
QString oldAddress;
-//! [mode declaration]
+//! [mode declaration]
Mode currentMode;
-//! [mode declaration]
+//! [mode declaration]
};
#endif
diff --git a/examples/widgets/tutorials/addressbook/part5/addressbook.cpp b/examples/widgets/tutorials/addressbook/part5/addressbook.cpp
index 90eb81986a..ca2f72e9e1 100644
--- a/examples/widgets/tutorials/addressbook/part5/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook/part5/addressbook.cpp
@@ -81,19 +81,19 @@ AddressBook::AddressBook(QWidget *parent)
connect(editButton, SIGNAL(clicked()), this, SLOT(editContact()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(cancel()));
connect(removeButton, SIGNAL(clicked()), this, SLOT(removeContact()));
-//! [signals and slots for find]
+//! [signals and slots for find]
connect(findButton, SIGNAL(clicked()), this, SLOT(findContact()));
-//! [signals and slots for find]
+//! [signals and slots for find]
connect(nextButton, SIGNAL(clicked()), this, SLOT(next()));
connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
-
+
QVBoxLayout *buttonLayout1 = new QVBoxLayout;
buttonLayout1->addWidget(addButton);
buttonLayout1->addWidget(editButton);
buttonLayout1->addWidget(removeButton);
-//! [adding findButton to layout]
+//! [adding findButton to layout]
buttonLayout1->addWidget(findButton);
-//! [adding findButton to layout]
+//! [adding findButton to layout]
buttonLayout1->addWidget(submitButton);
buttonLayout1->addWidget(cancelButton);
buttonLayout1->addStretch();
@@ -145,7 +145,7 @@ void AddressBook::submitContact()
}
if (currentMode == AddingMode) {
-
+
if (!contacts.contains(name)) {
contacts.insert(name, address);
QMessageBox::information(this, tr("Add Successful"),
@@ -155,7 +155,7 @@ void AddressBook::submitContact()
tr("Sorry, \"%1\" is already in your address book.").arg(name));
}
} else if (currentMode == EditingMode) {
-
+
if (oldName != name) {
if (!contacts.contains(name)) {
QMessageBox::information(this, tr("Edit Successful"),
@@ -196,7 +196,7 @@ void AddressBook::removeContact()
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes) {
-
+
previous();
contacts.remove(name);
@@ -241,7 +241,7 @@ void AddressBook::previous()
nameLine->setText(i.key());
addressText->setText(i.value());
}
-//! [findContact() function]
+//! [findContact() function]
void AddressBook::findContact()
{
dialog->show();
@@ -261,7 +261,7 @@ void AddressBook::findContact()
updateInterface(NavigationMode);
}
-//! [findContact() function]
+//! [findContact() function]
void AddressBook::updateInterface(Mode mode)
{
@@ -288,7 +288,7 @@ void AddressBook::updateInterface(Mode mode)
break;
case NavigationMode:
-
+
if (contacts.isEmpty()) {
nameLine->clear();
addressText->clear();
diff --git a/examples/widgets/tutorials/addressbook/part5/addressbook.h b/examples/widgets/tutorials/addressbook/part5/addressbook.h
index 5e2c18e91a..f8a53304ee 100644
--- a/examples/widgets/tutorials/addressbook/part5/addressbook.h
+++ b/examples/widgets/tutorials/addressbook/part5/addressbook.h
@@ -68,9 +68,9 @@ public slots:
void submitContact();
void cancel();
void removeContact();
-//! [findContact() declaration]
+//! [findContact() declaration]
void findContact();
-//! [findContact() declaration]
+//! [findContact() declaration]
void next();
void previous();
@@ -80,9 +80,9 @@ private:
QPushButton *addButton;
QPushButton *editButton;
QPushButton *removeButton;
-//! [findButton declaration]
+//! [findButton declaration]
QPushButton *findButton;
-//! [findButton declaration]
+//! [findButton declaration]
QPushButton *submitButton;
QPushButton *cancelButton;
QPushButton *nextButton;
@@ -91,9 +91,9 @@ private:
QTextEdit *addressText;
QMap<QString, QString> contacts;
-//! [FindDialog declaration]
+//! [FindDialog declaration]
FindDialog *dialog;
-//! [FindDialog declaration]
+//! [FindDialog declaration]
QString oldName;
QString oldAddress;
Mode currentMode;
diff --git a/examples/widgets/tutorials/addressbook/part6/addressbook.cpp b/examples/widgets/tutorials/addressbook/part6/addressbook.cpp
index a9bc2cc51c..2ced8e2404 100644
--- a/examples/widgets/tutorials/addressbook/part6/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook/part6/addressbook.cpp
@@ -71,9 +71,9 @@ AddressBook::AddressBook(QWidget *parent)
previousButton->setEnabled(false);
loadButton = new QPushButton(tr("&Load..."));
-//! [tooltip 1]
+//! [tooltip 1]
loadButton->setToolTip(tr("Load contacts from a file"));
-//! [tooltip 1]
+//! [tooltip 1]
saveButton = new QPushButton(tr("&Save..."));
//! [tooltip 2]
saveButton->setToolTip(tr("Save contacts to a file"));
@@ -92,7 +92,7 @@ AddressBook::AddressBook(QWidget *parent)
connect(previousButton, SIGNAL(clicked()), this, SLOT(previous()));
connect(loadButton, SIGNAL(clicked()), this, SLOT(loadFromFile()));
connect(saveButton, SIGNAL(clicked()), this, SLOT(saveToFile()));
-
+
QVBoxLayout *buttonLayout1 = new QVBoxLayout;
buttonLayout1->addWidget(addButton);
buttonLayout1->addWidget(editButton);
@@ -151,7 +151,7 @@ void AddressBook::submitContact()
}
if (currentMode == AddingMode) {
-
+
if (!contacts.contains(name)) {
contacts.insert(name, address);
QMessageBox::information(this, tr("Add Successful"),
@@ -161,7 +161,7 @@ void AddressBook::submitContact()
tr("Sorry, \"%1\" is already in your address book.").arg(name));
}
} else if (currentMode == EditingMode) {
-
+
if (oldName != name) {
if (!contacts.contains(name)) {
QMessageBox::information(this, tr("Edit Successful"),
@@ -202,7 +202,7 @@ void AddressBook::removeContact()
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes) {
-
+
previous();
contacts.remove(name);
@@ -296,7 +296,7 @@ void AddressBook::updateInterface(Mode mode)
break;
case NavigationMode:
-
+
if (contacts.isEmpty()) {
nameLine->clear();
addressText->clear();
@@ -341,12 +341,12 @@ void AddressBook::saveToFile()
return;
}
-//! [saveToFile() function part2]
+//! [saveToFile() function part2]
//! [saveToFile() function part3]
QDataStream out(&file);
out.setVersion(QDataStream::Qt_4_5);
out << contacts;
- }
+ }
}
//! [saveToFile() function part3]
@@ -362,15 +362,15 @@ void AddressBook::loadFromFile()
if (fileName.isEmpty())
return;
else {
-
+
QFile file(fileName);
-
+
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
return;
}
-
+
QDataStream in(&file);
in.setVersion(QDataStream::Qt_4_5);
contacts.clear(); // clear existing contacts
diff --git a/examples/widgets/tutorials/addressbook/part6/addressbook.h b/examples/widgets/tutorials/addressbook/part6/addressbook.h
index 99dfd1e404..ce2691ccad 100644
--- a/examples/widgets/tutorials/addressbook/part6/addressbook.h
+++ b/examples/widgets/tutorials/addressbook/part6/addressbook.h
@@ -70,10 +70,10 @@ public slots:
void findContact();
void next();
void previous();
-//! [save and load functions declaration]
+//! [save and load functions declaration]
void saveToFile();
void loadFromFile();
-//! [save and load functions declaration]
+//! [save and load functions declaration]
private:
void updateInterface(Mode mode);
@@ -86,10 +86,10 @@ private:
QPushButton *cancelButton;
QPushButton *nextButton;
QPushButton *previousButton;
-//! [save and load buttons declaration]
+//! [save and load buttons declaration]
QPushButton *loadButton;
QPushButton *saveButton;
-//! [save and load buttons declaration]
+//! [save and load buttons declaration]
QLineEdit *nameLine;
QTextEdit *addressText;
diff --git a/examples/widgets/tutorials/addressbook/part7/addressbook.cpp b/examples/widgets/tutorials/addressbook/part7/addressbook.cpp
index 6ad7630e8d..2060d97d2f 100644
--- a/examples/widgets/tutorials/addressbook/part7/addressbook.cpp
+++ b/examples/widgets/tutorials/addressbook/part7/addressbook.cpp
@@ -93,7 +93,7 @@ AddressBook::AddressBook(QWidget *parent)
connect(loadButton, SIGNAL(clicked()), this, SLOT(loadFromFile()));
connect(saveButton, SIGNAL(clicked()), this, SLOT(saveToFile()));
connect(exportButton, SIGNAL(clicked()), this, SLOT(exportAsVCard()));
-
+
QVBoxLayout *buttonLayout1 = new QVBoxLayout;
buttonLayout1->addWidget(addButton);
buttonLayout1->addWidget(editButton);
@@ -153,7 +153,7 @@ void AddressBook::submitContact()
}
if (currentMode == AddingMode) {
-
+
if (!contacts.contains(name)) {
contacts.insert(name, address);
QMessageBox::information(this, tr("Add Successful"),
@@ -163,7 +163,7 @@ void AddressBook::submitContact()
tr("Sorry, \"%1\" is already in your address book.").arg(name));
}
} else if (currentMode == EditingMode) {
-
+
if (oldName != name) {
if (!contacts.contains(name)) {
QMessageBox::information(this, tr("Edit Successful"),
@@ -204,7 +204,7 @@ void AddressBook::removeContact()
QMessageBox::Yes | QMessageBox::No);
if (button == QMessageBox::Yes) {
-
+
previous();
contacts.remove(name);
@@ -298,7 +298,7 @@ void AddressBook::updateInterface(Mode mode)
break;
case NavigationMode:
-
+
if (contacts.isEmpty()) {
nameLine->clear();
addressText->clear();
@@ -331,7 +331,7 @@ void AddressBook::saveToFile()
QString fileName = QFileDialog::getSaveFileName(this,
tr("Save Address Book"), "",
tr("Address Book (*.abk);;All Files (*)"));
-
+
if (fileName.isEmpty())
return;
else {
@@ -404,14 +404,14 @@ void AddressBook::exportAsVCard()
QString fileName = QFileDialog::getSaveFileName(this,
tr("Export Contact"), "",
tr("vCard Files (*.vcf);;All Files (*)"));
-
+
if (fileName.isEmpty())
return;
QFile file(fileName);
//! [export function part1]
-
-//! [export function part2]
+
+//! [export function part2]
if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
@@ -425,12 +425,12 @@ void AddressBook::exportAsVCard()
out << "BEGIN:VCARD" << "\n";
out << "VERSION:2.1" << "\n";
out << "N:" << lastName << ";" << firstName << "\n";
-
- if (!nameList.isEmpty())
+
+ if (!nameList.isEmpty())
out << "FN:" << nameList.join(' ') << "\n";
else
out << "FN:" << firstName << "\n";
-//! [export function part3]
+//! [export function part3]
//! [export function part4]
address.replace(";", "\\;", Qt::CaseInsensitive);
diff --git a/examples/widgets/tutorials/addressbook/part7/addressbook.h b/examples/widgets/tutorials/addressbook/part7/addressbook.h
index a34cf24a23..d672c7a85b 100644
--- a/examples/widgets/tutorials/addressbook/part7/addressbook.h
+++ b/examples/widgets/tutorials/addressbook/part7/addressbook.h
@@ -74,7 +74,7 @@ public slots:
void loadFromFile();
//! [exportAsVCard() declaration]
void exportAsVCard();
-//! [exportAsVCard() declaration]
+//! [exportAsVCard() declaration]
private:
void updateInterface(Mode mode);
@@ -89,9 +89,9 @@ private:
QPushButton *previousButton;
QPushButton *loadButton;
QPushButton *saveButton;
-//! [exportButton declaration]
+//! [exportButton declaration]
QPushButton *exportButton;
-//! [exportButton declaration]
+//! [exportButton declaration]
QLineEdit *nameLine;
QTextEdit *addressText;
diff --git a/examples/widgets/tutorials/gettingStarted/gsQt/part3/main.cpp b/examples/widgets/tutorials/gettingStarted/gsQt/part3/main.cpp
index e780986a53..bd0202c967 100644
--- a/examples/widgets/tutorials/gettingStarted/gsQt/part3/main.cpp
+++ b/examples/widgets/tutorials/gettingStarted/gsQt/part3/main.cpp
@@ -67,7 +67,7 @@ Notepad::Notepad()
layout->addWidget(textEdit);
layout->addWidget(quitButton);
- setLayout(layout);
+ setLayout(layout);
setWindowTitle(tr("Notepad"));
}
@@ -79,7 +79,7 @@ void Notepad::quit()
messageBox.setText(tr("Do you really want to quit?"));
messageBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
messageBox.setDefaultButton(QMessageBox::No);
- if (messageBox.exec() == QMessageBox::Yes)
+ if (messageBox.exec() == QMessageBox::Yes)
qApp->quit();
}
diff --git a/examples/widgets/tutorials/modelview/5_edit/mymodel.cpp b/examples/widgets/tutorials/modelview/5_edit/mymodel.cpp
index a3567a08ab..317c4760fb 100644
--- a/examples/widgets/tutorials/modelview/5_edit/mymodel.cpp
+++ b/examples/widgets/tutorials/modelview/5_edit/mymodel.cpp
@@ -78,7 +78,7 @@ bool MyModel::setData(const QModelIndex & index, const QVariant & value, int rol
//save value from editor to member m_gridData
m_gridData[index.row()][index.column()] = value.toString();
//for presentation purposes only: build and emit a joined string
- QString result;
+ QString result;
for(int row= 0; row < ROWS; row++)
{
for(int col= 0; col < COLS; col++)
diff --git a/examples/widgets/tutorials/modelview/7_selections/mainwindow.cpp b/examples/widgets/tutorials/modelview/7_selections/mainwindow.cpp
index d969582928..0c1eb290fa 100644
--- a/examples/widgets/tutorials/modelview/7_selections/mainwindow.cpp
+++ b/examples/widgets/tutorials/modelview/7_selections/mainwindow.cpp
@@ -72,7 +72,7 @@ MainWindow::MainWindow(QWidget *parent)
europeItem-> appendRow(italyItem);
italyItem-> appendRow(romeItem);
italyItem-> appendRow(veronaItem);
-
+
//register the model
treeView->setModel(standardModel);
treeView->expandAll();
diff --git a/examples/widgets/widgets.pro b/examples/widgets/widgets.pro
index 768b602e61..726494ffd6 100644
--- a/examples/widgets/widgets.pro
+++ b/examples/widgets/widgets.pro
@@ -19,7 +19,8 @@ SUBDIRS = \
statemachine \
tools \
tutorials \
- widgets
+ widgets \
+ windowcontainer
contains(DEFINES, QT_NO_CURSOR): SUBDIRS -= mainwindows
contains(DEFINES, QT_NO_DRAGANDDROP): SUBDIRS -= draganddrop
diff --git a/examples/widgets/widgets/calculator/button.cpp b/examples/widgets/widgets/calculator/button.cpp
index 70dbd52fca..395f685751 100644
--- a/examples/widgets/widgets/calculator/button.cpp
+++ b/examples/widgets/widgets/calculator/button.cpp
@@ -38,7 +38,7 @@
**
****************************************************************************/
-#include <QtWidgets>
+#include <QtWidgets>
#include "button.h"
diff --git a/examples/widgets/widgets/codeeditor/codeeditor.cpp b/examples/widgets/widgets/codeeditor/codeeditor.cpp
index 2a7865ce6e..7da0930301 100644
--- a/examples/widgets/widgets/codeeditor/codeeditor.cpp
+++ b/examples/widgets/widgets/codeeditor/codeeditor.cpp
@@ -79,7 +79,7 @@ int CodeEditor::lineNumberAreaWidth()
//![slotUpdateExtraAreaWidth]
void CodeEditor::updateLineNumberAreaWidth(int /* newBlockCount */)
-{
+{
setViewportMargins(lineNumberAreaWidth(), 0, 0, 0);
}
@@ -120,7 +120,7 @@ void CodeEditor::highlightCurrentLine()
if (!isReadOnly()) {
QTextEdit::ExtraSelection selection;
-
+
QColor lineColor = QColor(Qt::yellow).lighter(160);
selection.format.setBackground(lineColor);
diff --git a/examples/widgets/widgets/imageviewer/imageviewer.cpp b/examples/widgets/widgets/imageviewer/imageviewer.cpp
index ef200bc15f..77ec92d57a 100644
--- a/examples/widgets/widgets/imageviewer/imageviewer.cpp
+++ b/examples/widgets/widgets/imageviewer/imageviewer.cpp
@@ -99,7 +99,7 @@ void ImageViewer::print()
//! [5] //! [6]
{
Q_ASSERT(imageLabel->pixmap());
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
//! [6] //! [7]
QPrintDialog dialog(&printer, this);
//! [7] //! [8]
diff --git a/examples/widgets/widgets/lineedits/window.cpp b/examples/widgets/widgets/lineedits/window.cpp
index 0749e8d4fd..a0871e7c77 100644
--- a/examples/widgets/widgets/lineedits/window.cpp
+++ b/examples/widgets/widgets/lineedits/window.cpp
@@ -55,6 +55,7 @@ Window::Window()
echoComboBox->addItem(tr("No Echo"));
echoLineEdit = new QLineEdit;
+ echoLineEdit->setPlaceholderText("Placeholder Text");
echoLineEdit->setFocus();
//! [0]
@@ -68,6 +69,7 @@ Window::Window()
validatorComboBox->addItem(tr("Double validator"));
validatorLineEdit = new QLineEdit;
+ validatorLineEdit->setPlaceholderText("Placeholder Text");
//! [1]
//! [2]
@@ -80,6 +82,7 @@ Window::Window()
alignmentComboBox->addItem(tr("Right"));
alignmentLineEdit = new QLineEdit;
+ alignmentLineEdit->setPlaceholderText("Placeholder Text");
//! [2]
//! [3]
@@ -93,6 +96,7 @@ Window::Window()
inputMaskComboBox->addItem(tr("License key"));
inputMaskLineEdit = new QLineEdit;
+ inputMaskLineEdit->setPlaceholderText("Placeholder Text");
//! [3]
//! [4]
@@ -104,6 +108,7 @@ Window::Window()
accessComboBox->addItem(tr("True"));
accessLineEdit = new QLineEdit;
+ accessLineEdit->setPlaceholderText("Placeholder Text");
//! [4]
//! [5]
diff --git a/examples/widgets/widgets/scribble/scribblearea.cpp b/examples/widgets/widgets/scribble/scribblearea.cpp
index 2492476d38..4028263e69 100644
--- a/examples/widgets/widgets/scribble/scribblearea.cpp
+++ b/examples/widgets/widgets/scribble/scribblearea.cpp
@@ -200,9 +200,9 @@ void ScribbleArea::resizeImage(QImage *image, const QSize &newSize)
//! [21]
void ScribbleArea::print()
{
-#ifndef QT_NO_PRINTER
+#if !defined(QT_NO_PRINTER) && !defined(QT_NO_PRINTDIALOG)
QPrinter printer(QPrinter::HighResolution);
-
+
QPrintDialog printDialog(&printer, this);
//! [21] //! [22]
if (printDialog.exec() == QDialog::Accepted) {
diff --git a/examples/widgets/widgets/styles/widgetgallery.cpp b/examples/widgets/widgets/styles/widgetgallery.cpp
index 604f5af40b..4421bd19c4 100644
--- a/examples/widgets/widgets/styles/widgetgallery.cpp
+++ b/examples/widgets/widgets/styles/widgetgallery.cpp
@@ -215,7 +215,7 @@ void WidgetGallery::createBottomLeftTabWidget()
"Like a diamond in the sky.\n"
"Twinkle, twinkle, little star,\n"
"How I wonder what you are!\n"));
-
+
QHBoxLayout *tab2hbox = new QHBoxLayout;
tab2hbox->setMargin(5);
tab2hbox->addWidget(textEdit);
diff --git a/examples/widgets/widgets/styles/widgetgallery.h b/examples/widgets/widgets/styles/widgetgallery.h
index 27e82c4d14..25d4c5881d 100644
--- a/examples/widgets/widgets/styles/widgetgallery.h
+++ b/examples/widgets/widgets/styles/widgetgallery.h
@@ -83,7 +83,7 @@ private:
void createProgressBar();
QPalette originalPalette;
-
+
QLabel *styleLabel;
QComboBox *styleComboBox;
QCheckBox *useStylePaletteCheckBox;
diff --git a/examples/widgets/windowcontainer/windowcontainer.cpp b/examples/widgets/windowcontainer/windowcontainer.cpp
new file mode 100644
index 0000000000..42523a53d0
--- /dev/null
+++ b/examples/widgets/windowcontainer/windowcontainer.cpp
@@ -0,0 +1,170 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 "openglwindow.h"
+
+#include <QPainter>
+#include <QMouseEvent>
+#include <QKeyEvent>
+#include <QFocusEvent>
+
+#include <QApplication>
+#include <QWidget>
+#include <QHBoxLayout>
+#include <QLineEdit>
+
+
+
+// Making use of the class from the opengl example in gui.
+class Window : public OpenGLWindow
+{
+ Q_OBJECT
+public:
+ Window()
+ : m_mouseDown(false)
+ , m_focus(false)
+ {
+ }
+
+ void render(QPainter *p) {
+ QLinearGradient g(0, 0, 0, height());
+ g.setColorAt(0, QColor("lightsteelblue"));
+ g.setColorAt(1, Qt::black);
+ p->fillRect(0, 0, width(), height(), g);
+
+ p->setPen(Qt::white);
+
+ p->drawText(20, 30, QLatin1String("This is an OpenGL based QWindow"));
+
+ if (m_key.trimmed().length() > 0) {
+ QRect bounds = p->boundingRect(QRect(0, 0, width(), height()), Qt::AlignTop | Qt::AlignLeft, m_key);
+ p->save();
+ p->translate(width() / 2.0, height() / 2.0);
+ p->scale(10, 10);
+ p->translate(-bounds.width() / 2.0, -bounds.height() / 2.0);
+ p->drawText(bounds, Qt::AlignCenter, m_key);
+ p->restore();
+ }
+
+ if (m_focus) {
+ p->drawText(20, height() - 20, QLatin1String("Window has focus!"));
+ }
+
+ p->setRenderHint(QPainter::Antialiasing);
+ p->drawPolyline(m_polygon);
+ }
+
+ void mousePressEvent(QMouseEvent *e) {
+ m_mouseDown = true;
+ m_polygon.clear();
+ m_polygon.append(e->pos());
+ renderLater();
+ }
+
+ void mouseMoveEvent(QMouseEvent *e) {
+ if (m_mouseDown) {
+ m_polygon.append(e->pos());
+ renderLater();
+ }
+ }
+
+ void mouseReleaseEvent(QMouseEvent *e) {
+ m_mouseDown = false;
+ m_polygon.append(e->pos());
+ renderLater();
+ }
+
+ void focusInEvent(QFocusEvent *) {
+ m_focus = true;
+ renderLater();
+ }
+
+ void focusOutEvent(QFocusEvent *) {
+ m_focus = false;
+ m_polygon.clear();
+ renderLater();
+ }
+
+ void keyPressEvent(QKeyEvent *e) {
+ m_key = e->text();
+ renderLater();
+ }
+
+ void keyReleaseEvent(QKeyEvent *) {
+ m_key = QString();
+ renderLater();
+ }
+private:
+ QPolygon m_polygon;
+ bool m_mouseDown;
+
+ bool m_focus;
+
+ QString m_key;
+};
+
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ QWidget *widget = new QWidget;
+ QHBoxLayout *layout = new QHBoxLayout(widget);
+
+ Window *window = new Window();
+
+ QWidget *container = QWidget::createWindowContainer(window);
+ container->setMinimumSize(300, 300);
+ container->setMaximumSize(600, 600);
+ container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ container->setFocusPolicy(Qt::StrongFocus);
+
+ window->setGeometry(100, 100, 300, 200);
+
+ layout->addWidget(new QLineEdit(QLatin1String("A QLineEdit")));
+ layout->addWidget(container);
+ layout->addWidget(new QLineEdit(QLatin1String("A QLabel")));
+
+ widget->show();
+
+ return app.exec();
+}
+
+#include "windowcontainer.moc"
diff --git a/examples/widgets/windowcontainer/windowcontainer.pro b/examples/widgets/windowcontainer/windowcontainer.pro
new file mode 100644
index 0000000000..9ac7e4a5ab
--- /dev/null
+++ b/examples/widgets/windowcontainer/windowcontainer.pro
@@ -0,0 +1,9 @@
+SOURCES = windowcontainer.cpp
+
+QT += widgets
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/widgets/windowcontainer
+INSTALLS += target
+
+include(../../gui/openglwindow/openglwindow.pri)
diff --git a/examples/xml/xml.pro b/examples/xml/xml.pro
index bc8686a475..72bf95b2ea 100644
--- a/examples/xml/xml.pro
+++ b/examples/xml/xml.pro
@@ -4,7 +4,9 @@ SUBDIRS = htmlinfo \
qtHaveModule(widgets) {
SUBDIRS += dombookmarks \
- rsslisting \
saxbookmarks \
streambookmarks
+
+ qtHaveModule(network): SUBDIRS += \
+ rsslisting
}
diff --git a/mkspecs/aix-g++-64/qmake.conf b/mkspecs/aix-g++-64/qmake.conf
index a1e9bd5903..2aa7d9fb1d 100644
--- a/mkspecs/aix-g++-64/qmake.conf
+++ b/mkspecs/aix-g++-64/qmake.conf
@@ -60,7 +60,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthreads
QMAKE_AR = ar -X64 cq
diff --git a/mkspecs/aix-g++/qmake.conf b/mkspecs/aix-g++/qmake.conf
index 5f7b8b44d3..04a186aef8 100644
--- a/mkspecs/aix-g++/qmake.conf
+++ b/mkspecs/aix-g++/qmake.conf
@@ -60,7 +60,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthreads
QMAKE_AR = ar cqs
diff --git a/mkspecs/aix-xlc-64/qmake.conf b/mkspecs/aix-xlc-64/qmake.conf
index a0d4ba0ef5..71a8c8327b 100644
--- a/mkspecs/aix-xlc-64/qmake.conf
+++ b/mkspecs/aix-xlc-64/qmake.conf
@@ -59,7 +59,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthreads
QMAKE_AR = ar -X64 cq
diff --git a/mkspecs/aix-xlc/qmake.conf b/mkspecs/aix-xlc/qmake.conf
index 8ea3d57299..e0d3284462 100644
--- a/mkspecs/aix-xlc/qmake.conf
+++ b/mkspecs/aix-xlc/qmake.conf
@@ -60,7 +60,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthreads
QMAKE_AR = ar cq
diff --git a/mkspecs/android-g++/qmake.conf b/mkspecs/android-g++/qmake.conf
new file mode 100644
index 0000000000..4901f0b0e2
--- /dev/null
+++ b/mkspecs/android-g++/qmake.conf
@@ -0,0 +1,178 @@
+# qmake configuration for building with android-g++
+MAKEFILE_GENERATOR = UNIX
+QMAKE_PLATFORM = android
+QMAKE_COMPILER = gcc
+
+CONFIG += android_install
+DEFINES += QT_NO_PRINTDIALOG
+
+include(../qdevice.pri)
+include(../common/linux.conf)
+include(../common/gcc-base-unix.conf)
+
+# Passing in -win32 to qmake (from NQTC) causes this condition to pass, however
+# qmake complains that -win32 is deprecated; should find another way, Q_OS_WIN
+# should really be all QMAKE_HOST.os needs to depend on?
+contains(QMAKE_HOST.os,Windows) {
+ # Not having sh.exe in your path causes this condition to pass
+ # To build Android Qt on Windows, this block must not be evaluated.
+ isEmpty(QMAKE_SH) {
+ include(../common/shell-win32.conf)
+ QMAKE_DEL_TREE = rmdir /s /q
+ QMAKE_INSTALL_FILE = copy /y
+ QMAKE_INSTALL_PROGRAM = copy /y
+ }
+}
+
+NDK_ROOT = $$(ANDROID_NDK_ROOT)
+!exists($$NDK_ROOT) {
+ NDK_ROOT = $$DEFAULT_ANDROID_NDK_ROOT
+ !exists($$NDK_ROOT): error("You need to set the ANDROID_NDK_ROOT environment variable to point to your Android NDK.")
+}
+
+NDK_HOST = $$(ANDROID_NDK_HOST)
+isEmpty(NDK_HOST): NDK_HOST = $$DEFAULT_ANDROID_NDK_HOST
+
+ANDROID_PLATFORM = $$(ANDROID_NDK_PLATFORM)
+isEmpty(ANDROID_PLATFORM): ANDROID_PLATFORM = $$DEFAULT_ANDROID_PLATFORM
+
+ANDROID_TARGET_ARCH = $$(ANDROID_TARGET_ARCH)
+isEmpty(ANDROID_TARGET_ARCH): ANDROID_TARGET_ARCH = $$DEFAULT_ANDROID_TARGET_ARCH
+
+NDK_TOOLCHAIN_PREFIX = $$(ANDROID_NDK_TOOLCHAIN_PREFIX)
+isEmpty(NDK_TOOLCHAIN_PREFIX) {
+ equals(ANDROID_TARGET_ARCH, x86): NDK_TOOLCHAIN_PREFIX = x86
+ else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLCHAIN_PREFIX = mipsel-linux-android
+ else: NDK_TOOLCHAIN_PREFIX = arm-linux-androideabi
+}
+
+NDK_TOOLS_PREFIX = $$(ANDROID_NDK_TOOLS_PREFIX)
+isEmpty(NDK_TOOLS_PREFIX) {
+ equals(ANDROID_TARGET_ARCH, x86): NDK_TOOLS_PREFIX = i686-linux-android
+ else: equals(ANDROID_TARGET_ARCH, mips): NDK_TOOLS_PREFIX = mipsel-linux-android
+ else: NDK_TOOLS_PREFIX = arm-linux-androideabi
+}
+
+NDK_TOOLCHAIN_VERSION = $$(ANDROID_NDK_TOOLCHAIN_VERSION)
+isEmpty(NDK_TOOLCHAIN_VERSION): NDK_TOOLCHAIN_VERSION = $$DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION
+
+equals(ANDROID_TARGET_ARCH, x86): ANDROID_ARCHITECTURE = x86
+else: equals(ANDROID_TARGET_ARCH, mips): ANDROID_ARCHITECTURE = mips
+else: ANDROID_ARCHITECTURE = arm
+
+!equals(NDK_TOOLCHAIN_VERSION, 4.4.3): ANDROID_CXXSTL_SUFFIX = -$$NDK_TOOLCHAIN_VERSION
+
+NDK_TOOLCHAIN = $$NDK_TOOLCHAIN_PREFIX-$$NDK_TOOLCHAIN_VERSION
+NDK_TOOLCHAIN_PATH = $$NDK_ROOT/toolchains/$$NDK_TOOLCHAIN/prebuilt/$$NDK_HOST
+
+CONFIG += $$ANDROID_PLATFORM
+ANDROID_PLATFORM_ROOT_PATH = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/
+ANDROID_PLATFORM_PATH = $$ANDROID_PLATFORM_ROOT_PATH/usr
+
+# used to compile platform plugins for android-4 and android-5
+QMAKE_ANDROID_PLATFORM_INCDIR = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/usr/include
+QMAKE_ANDROID_PLATFORM_LIBDIR = $$NDK_ROOT/platforms/$$ANDROID_PLATFORM/arch-$$ANDROID_ARCHITECTURE/usr/lib
+
+ANDROID_SOURCES_CXX_STL_LIBDIR = $$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/$$NDK_TOOLCHAIN_VERSION/libs/$$ANDROID_TARGET_ARCH
+ANDROID_SOURCES_CXX_STL_INCDIR = $$NDK_ROOT/sources/cxx-stl/gnu-libstdc++/$$NDK_TOOLCHAIN_VERSION/include $$ANDROID_SOURCES_CXX_STL_LIBDIR/include
+
+# modifications to g++.conf
+QMAKE_CC = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-gcc
+
+equals(ANDROID_TARGET_ARCH, armeabi-v7a): \
+ QMAKE_CFLAGS = -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack
+else: equals(ANDROID_TARGET_ARCH, armeabi): \
+ QMAKE_CFLAGS = -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack
+else: equals(ANDROID_TARGET_ARCH, x86): \
+ QMAKE_CFLAGS = -ffunction-sections -funwind-tables -O2 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -DANDROID -Wa,--noexecstack
+else: equals(ANDROID_TARGET_ARCH, mips): \
+ QMAKE_CFLAGS = -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -O2 -fomit-frame-pointer -funswitch-loops -finline-limit=300 -DANDROID -Wa,--noexecstack
+
+QMAKE_CFLAGS_WARN_ON = -Wall -Wno-psabi -W
+QMAKE_CFLAGS_WARN_OFF = -Wno-psabi
+equals(ANDROID_TARGET_ARCH, x86) {
+ QMAKE_CFLAGS_RELEASE = -O2
+ QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2
+ QMAKE_CFLAGS_DEBUG = -g
+} else: equals(ANDROID_TARGET_ARCH, mips) {
+ QMAKE_CFLAGS_RELEASE = -O2
+ QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -O2
+ QMAKE_CFLAGS_DEBUG = -g -fno-omit-frame-pointer
+} else { # arm
+ QMAKE_CFLAGS_RELEASE = -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64
+ QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO = -g -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64
+ QMAKE_CFLAGS_DEBUG = -g -marm -O0 -fno-omit-frame-pointer
+}
+
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden
+
+QMAKE_CXX = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++0x
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO
+QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_HIDESYMS = $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_LINK
+
+# modifications to linux.conf
+QMAKE_AR = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-ar cqs
+QMAKE_OBJCOPY = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-objcopy
+
+QMAKE_STRIP =
+#$$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-strip
+
+QMAKE_RANLIB = $$NDK_TOOLCHAIN_PATH/bin/$$NDK_TOOLS_PREFIX-ranlib
+
+QMAKE_INCDIR = $$ANDROID_SOURCES_CXX_STL_INCDIR $$ANDROID_PLATFORM_PATH/include
+QMAKE_LIBDIR = $$ANDROID_SOURCES_CXX_STL_LIBDIR $$ANDROID_PLATFORM_PATH/lib $$LIBGCC_PATH
+QMAKE_INCDIR_X11 =
+QMAKE_LIBDIR_X11 =
+QMAKE_INCDIR_OPENGL = $$ANDROID_PLATFORM_PATH/include
+QMAKE_LIBDIR_OPENGL = $$ANDROID_PLATFORM_PATH/lib
+
+equals(ANDROID_TARGET_ARCH, x86)|equals(ANDROID_TARGET_ARCH, mips): \
+ LIBGCC_PATH_FULL = $$system("$$QMAKE_CC -print-libgcc-file-name")
+else: \
+ LIBGCC_PATH_FULL = $$system("$$QMAKE_CC -mthumb-interwork -print-libgcc-file-name")
+
+LIBGCC_PATH = $$dirname(LIBGCC_PATH_FULL)
+
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+QMAKE_LFLAGS = --sysroot=$$ANDROID_PLATFORM_ROOT_PATH
+QMAKE_RPATHLINK = $$ANDROID_PLATFORM_PATH/lib
+QMAKE_LFLAGS_APP = -Wl,--no-undefined -Wl,-z,noexecstack -shared
+QMAKE_LFLAGS_SHLIB = -Wl,--no-undefined -Wl,-z,noexecstack -shared
+
+contains(NDK_ROOT, ".*r6")|contains(NDK_ROOT, ".*r5.*") {
+ !equals(ANDROID_PLATFORM, android-4):!equals(ANDROID_PLATFORM, android-5):!equals(ANDROID_PLATFORM, android-8) {
+ warning("Your NDK version is outdated. A workaround is enabled. Consider updating your NDK (workarounds are required until r6(a))")
+ QMAKE_LFLAGS_SHLIB += $$ANDROID_PLATFORM_PATH/lib/crtbegin_so.o $$ANDROID_PLATFORM_PATH/lib/crtend_so.o
+ }
+}
+
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME =
+QMAKE_LFLAGS_NOUNDEF = -Wl,--no-undefined
+QMAKE_LFLAGS_RPATH = -Wl,-rpath=
+QMAKE_LFLAGS_RPATHLINK = -Wl,-rpath-link=
+
+QMAKE_LIBS = -lgnustl_shared -lsupc++ -llog -lz -lm -ldl -lc -lgcc
+QMAKE_LIBS_X11 =
+QMAKE_LIBS_THREAD =
+QMAKE_LIBS_EGL = -lEGL
+QMAKE_LIBS_OPENGL =
+QMAKE_LIBS_OPENGL_ES1 = -lGLESv1_CM
+QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $$QMAKE_LIBS
+
+load(qt_config)
diff --git a/mkspecs/android-g++/qplatformdefs.h b/mkspecs/android-g++/qplatformdefs.h
new file mode 100644
index 0000000000..0acd19ea5d
--- /dev/null
+++ b/mkspecs/android-g++/qplatformdefs.h
@@ -0,0 +1,187 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the qmake spec 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 QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+#define QT_QPA_DEFAULT_PLATFORM_NAME "android"
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+// 1) need to reset default environment if _BSD_SOURCE is defined
+// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
+// 3) it seems older glibc need this to include the X/Open stuff
+
+#include <unistd.h>
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+#include <features.h>
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+#include <dlfcn.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_STATBUF struct stat64
+#define QT_STATBUF4TSTAT struct stat64
+#define QT_STAT ::stat64
+#define QT_FSTAT ::fstat64
+#define QT_LSTAT ::lstat64
+#define QT_OPEN ::open64
+#define QT_TRUNCATE ::truncate64
+#define QT_FTRUNCATE ::ftruncate64
+#define QT_LSEEK ::lseek64
+#else
+#define QT_STATBUF struct stat
+#define QT_STATBUF4TSTAT struct stat
+#define QT_STAT ::stat
+#define QT_FSTAT ::fstat
+#define QT_LSTAT ::lstat
+#define QT_OPEN ::open
+#define QT_TRUNCATE ::truncate
+#define QT_FTRUNCATE ::ftruncate
+#define QT_LSEEK ::lseek
+#endif
+
+#ifdef QT_LARGEFILE_SUPPORT
+#define QT_FOPEN ::fopen64
+#define QT_FSEEK ::fseeko64
+#define QT_FTELL ::ftello64
+#define QT_FGETPOS ::fgetpos64
+#define QT_FSETPOS ::fsetpos64
+#define QT_MMAP ::mmap64
+#define QT_FPOS_T fpos64_t
+#define QT_OFF_T off64_t
+#else
+#define QT_FOPEN ::fopen
+#define QT_FSEEK ::fseek
+#define QT_FTELL ::ftell
+#define QT_FGETPOS ::fgetpos
+#define QT_FSETPOS ::fsetpos
+#define QT_MMAP ::mmap
+#define QT_FPOS_T fpos_t
+#define QT_OFF_T long
+#endif
+
+#define QT_STAT_REG S_IFREG
+#define QT_STAT_DIR S_IFDIR
+#define QT_STAT_MASK S_IFMT
+#define QT_STAT_LNK S_IFLNK
+#define QT_SOCKET_CONNECT ::connect
+#define QT_SOCKET_BIND ::bind
+#define QT_FILENO fileno
+#define QT_CLOSE ::close
+#define QT_READ ::read
+#define QT_WRITE ::write
+#define QT_ACCESS ::access
+#define QT_GETCWD ::getcwd
+#define QT_CHDIR ::chdir
+#define QT_MKDIR ::mkdir
+#define QT_RMDIR ::rmdir
+#define QT_OPEN_LARGEFILE O_LARGEFILE
+#define QT_OPEN_RDONLY O_RDONLY
+#define QT_OPEN_WRONLY O_WRONLY
+#define QT_OPEN_RDWR O_RDWR
+#define QT_OPEN_CREAT O_CREAT
+#define QT_OPEN_TRUNC O_TRUNC
+#define QT_OPEN_APPEND O_APPEND
+
+// Directory iteration
+#define QT_DIR DIR
+
+#define QT_OPENDIR ::opendir
+#define QT_CLOSEDIR ::closedir
+
+#if defined(QT_LARGEFILE_SUPPORT) \
+ && defined(QT_USE_XOPEN_LFS_EXTENSIONS) \
+ && !defined(QT_NO_READDIR64)
+#define QT_DIRENT struct dirent64
+#define QT_READDIR ::readdir64
+#define QT_READDIR_R ::readdir64_r
+#else
+#define QT_DIRENT struct dirent
+#define QT_READDIR ::readdir
+#define QT_READDIR_R ::readdir_r
+#endif
+
+#define QT_SOCKET_CONNECT ::connect
+#define QT_SOCKET_BIND ::bind
+
+
+#define QT_SIGNAL_RETTYPE void
+#define QT_SIGNAL_ARGS int
+#define QT_SIGNAL_IGNORE SIG_IGN
+
+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+#define QT_SOCKLEN_T socklen_t
+#else
+#define QT_SOCKLEN_T int
+#endif
+
+#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+#endif
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/common/clang-mac.conf b/mkspecs/common/clang-mac.conf
index f7fe50a50b..efe771d24d 100644
--- a/mkspecs/common/clang-mac.conf
+++ b/mkspecs/common/clang-mac.conf
@@ -3,3 +3,5 @@ QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -
QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
QMAKE_OBJCXXFLAGS_PRECOMPILE = -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+QMAKE_XCODE_GCC_VERSION = com.apple.compilers.llvm.clang.1_0
diff --git a/mkspecs/common/gcc-base-ios.conf b/mkspecs/common/gcc-base-ios.conf
deleted file mode 100644
index 2fd597e973..0000000000
--- a/mkspecs/common/gcc-base-ios.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# Base qmake configuration for GCC on iOS
-#
-# Before making changes to this file, please read the comment in
-# gcc-base.conf, to make sure the change goes in the right place.
-#
-# To verify that your change has the desired effect on the final configuration
-# you can use the manual test in tests/manual/mkspecs.
-#
-
-include(gcc-base.conf)
-
-QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__=4
-
-QMAKE_CFLAGS_DEBUG += -gdwarf-2
-
-QMAKE_CXXFLAGS_DEBUG += -gdwarf-2
-
-QMAKE_OBJECTIVE_CFLAGS = $$QMAKE_CFLAGS
-QMAKE_OBJECTIVE_CFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_OBJECTIVE_CFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_OBJECTIVE_CFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
-QMAKE_OBJECTIVE_CFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
-QMAKE_OBJECTIVE_CFLAGS_HIDESYMS = $$QMAKE_CXXFLAGS_HIDESYMS
-
-QMAKE_LFLAGS += -headerpad_max_install_names
-QMAKE_LFLAGS_SHLIB += -single_module -dynamiclib
-QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_INCREMENTAL += -undefined suppress -flat_namespace
-QMAKE_LFLAGS_SONAME += -install_name$${LITERAL_WHITESPACE}@executable_path/
-QMAKE_LFLAGS_VERSION += -current_version$${LITERAL_WHITESPACE}
-QMAKE_LFLAGS_COMPAT_VERSION += -compatibility_version$${LITERAL_WHITESPACE}
-
diff --git a/mkspecs/common/gcc-base-macx.conf b/mkspecs/common/gcc-base-mac.conf
index 45fa248b66..cee129e774 100644
--- a/mkspecs/common/gcc-base-macx.conf
+++ b/mkspecs/common/gcc-base-mac.conf
@@ -1,5 +1,5 @@
#
-# Base qmake configuration for GCC on Mac OS X
+# Base qmake configuration for GCC on Mac OS X and iOS
#
# Before making changes to this file, please read the comment in
# gcc-base.conf, to make sure the change goes in the right place.
diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf
index 43ebc0ab3a..7459be65bf 100644
--- a/mkspecs/common/gcc-base.conf
+++ b/mkspecs/common/gcc-base.conf
@@ -7,8 +7,7 @@
#
# Platform-specific options shared by these compilers are put into:
#
-# - gcc-base-ios.conf
-# - gcc-base-macx.conf
+# - gcc-base-mac.conf
# - gcc-base-unix.conf
#
# These base files are then combined with configurations for each compiler:
@@ -20,11 +19,11 @@
# - clang.conf
#
# The combination happens in the top level mkspec, by including a platform-
-# specific version of the base-file, for example gcc-base-macx.conf, and then
+# specific version of the base-file, for example gcc-base-mac.conf, and then
# a (possibly platform-specific) version of the actual compiler configuration,
# for example g++-macx.conf.
#
-# If you are making changes to any of these files, please consider the
+# If you are making changes to any of these files, please consider the
# possible effect it may have due to these include-rules, and whether it
# might make more sense to share the rule or make it more specific.
#
diff --git a/mkspecs/common/ios.conf b/mkspecs/common/ios.conf
index 7420b56daf..b7d2b84ec9 100644
--- a/mkspecs/common/ios.conf
+++ b/mkspecs/common/ios.conf
@@ -2,18 +2,7 @@
# qmake common configuration for iOS
#
-MAKEFILE_GENERATOR = UNIX
-CONFIG += ios reduce_exports incremental global_init_link_order lib_version_first plugin_no_soname
-QMAKE_INCREMENTAL_STYLE = sublib
+QMAKE_PLATFORM += ios
+QMAKE_MAC_SDK = iphoneos
-# Qt can't build iOS app bundle :(
-CONFIG -= app_bundle
-
-# Not deploying to Mac OSX
-QMAKE_MACOSX_DEPLOYMENT_TARGET =
-
-# Add iOS common folder to include path
-INCLUDEPATH += $$PWD/ios
-
-# iOS defines
-DEFINES += DARWIN_NO_CARBON Q_OS_IOS QT_NO_CORESERVICES QT_NO_PRINTER QT_NO_PRINTDIALOG
+include(mac.conf)
diff --git a/mkspecs/common/ios/arch.conf b/mkspecs/common/ios/arch.conf
deleted file mode 100644
index 4ad96874fe..0000000000
--- a/mkspecs/common/ios/arch.conf
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# Helper to set CPU architecture flags for iOS configurations
-#
-# Depends on:
-#
-# QMAKE_IPHONEOS_DEPLOYMENT_TARGET - set in mkspecs/common/ios/versions.conf
-#
-# Note:
-#
-# Must be included after load(qt_config) in mkspec for auto-detection based
-# on GL/ES version (GL/ES 2.x implies armv7 on iOS).
-#
-
-# Target architecture for iOS devices (armv6, armv7 or leave blank for default)
-QMAKE_IOS_TARGET_ARCH =
-
-###########################################################################
-
-# Device?
-!*simulator* {
- # Let mkspec specify archictecture
- *armv6*: QMAKE_IOS_TARGET_ARCH = armv6
- else:*armv7*: QMAKE_IOS_TARGET_ARCH = armv7
-
- # ARMv7 architecture device (see below) is required for OpenGL/ES 2.x
- isEmpty(QMAKE_IOS_TARGET_ARCH):contains(QT_CONFIG, opengles2): QMAKE_IOS_TARGET_ARCH = armv7
-
- # No target architecture specified?
- isEmpty(QMAKE_IOS_TARGET_ARCH) {
- # iOS versions < 4.3 can be armv6 or armv7, so need armv6 for max. compatibility,
- # assume that building for OpenGL/ES 1.x is targeting armv6
- lessThan(QMAKE_IPHONEOS_DEPLOYMENT_TARGET, "4.3")|contains(QT_CONFIG, opengles1) {
- QMAKE_IOS_TARGET_ARCH = armv6
- } else: QMAKE_IOS_TARGET_ARCH = armv7
- }
-
- # Samsung S5PC100, Apple A4, A5, A5X
- equals(QMAKE_IOS_TARGET_ARCH, "armv7") {
- # iOS CPU architecture (armv7)
- QMAKE_IOS_ARM_ARCH = __ARM_ARCH_7__
-
- # Thumb2 instructions
- QMAKE_IOS_ARM_FLAGS = -mthumb
- QMAKE_IOS_ARM_ARCH += __MARM_THUMB__
-
- # NEON instructions
- *-g++*: QMAKE_IOS_ARM_FLAGS += -mfloat-abi=softfp -mfpu=neon
- QMAKE_IOS_ARM_ARCH += __ARM_NEON__
- } else {
- # Samsung S5L8900
- if(equals(QMAKE_IOS_TARGET_ARCH, "armv6")) {
- # iOS CPU architecture (armv6)
- QMAKE_IOS_ARM_ARCH = __ARM_ARCH_6__
-
- # ARM instructions
- QMAKE_IOS_ARM_FLAGS = -marm -mcpu=arm1176jzf-s
- !*clang*: QMAKE_IOS_ARM_FLAGS += -march=armv6
- } else {
- # Unsupported architecture
- error("Invalid iOS target $${QMAKE_IOS_TARGET_ARCH}! Edit mkspecs/common/ios/arch.conf to specify target architecture.")
- }
- }
-# Simulator is i386 only
-} else: QMAKE_IOS_TARGET_ARCH = i386
-
-# iOS architecture build flags
-QMAKE_IOS_ARCH_FLAGS = -arch $$QMAKE_IOS_TARGET_ARCH
-QMAKE_CFLAGS += $$QMAKE_IOS_ARCH_FLAGS
-QMAKE_CXXFLAGS += $$QMAKE_IOS_ARCH_FLAGS
-QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_IOS_ARCH_FLAGS
-QMAKE_LFLAGS += $$QMAKE_IOS_ARCH_FLAGS
-QMAKE_IOS_TARGET_ARCH =
-QMAKE_IOS_ARCH_FLAGS =
-
-# Architecture specific defines/flags
-!*simulator* {
- DEFINES += $$QMAKE_IOS_ARM_ARCH
- QMAKE_IOS_ARM_ARCH =
-
- QMAKE_CFLAGS += $$QMAKE_IOS_ARM_FLAGS
- QMAKE_CXXFLAGS += $$QMAKE_IOS_ARM_FLAGS
- QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_IOS_ARM_FLAGS
- QMAKE_IOS_ARM_FLAGS =
-}
diff --git a/mkspecs/common/ios/clang.conf b/mkspecs/common/ios/clang.conf
index 10d1dbd24e..ced937ba59 100644
--- a/mkspecs/common/ios/clang.conf
+++ b/mkspecs/common/ios/clang.conf
@@ -3,39 +3,29 @@
#
# Depends on:
#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
+# QMAKE_XCODE_VERSION - set in xcode.conf
#
# iOS build flags
-QMAKE_IOS_CFLAGS = -fvisibility=hidden -fpascal-strings -fmessage-length=0
+QMAKE_IOS_CFLAGS += -fvisibility=hidden -fpascal-strings -fmessage-length=0
QMAKE_IOS_CFLAGS += -Wno-trigraphs -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -Wno-sign-conversion
-QMAKE_IOS_CXXFLAGS = -fvisibility-inlines-hidden
-QMAKE_IOS_OBJ_CFLAGS = -Wno-arc-abi -Wc++0x-extensions
+QMAKE_IOS_CXXFLAGS += -fvisibility-inlines-hidden
+QMAKE_IOS_OBJ_CFLAGS += -Wno-arc-abi
-# Device or simulator specific flags
-*simulator* {
- QMAKE_IOS_CFLAGS += -fexceptions -fasm-blocks
- QMAKE_IOS_OBJ_CFLAGS += -fobjc-abi-version=2 -fobjc-legacy-dispatch
-}
+# Based on the following information, http://clang.llvm.org/doxygen/ObjCRuntime_8h_source.html,
+# we can conclude that it's safe to always pass the following flags
+QMAKE_IOS_OBJ_CFLAGS += -fobjc-nonfragile-abi -fobjc-legacy-dispatch
-# Compiler version-specific flags
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") {
- # Clang 3.1 flags (will be used for later versions too)
- QMAKE_IOS_CFLAGS += -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-implicit-atomic-properties -Wformat -Wno-missing-braces -Wno-unused-function -Wno-unused-label -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-sign-compare -Wpointer-sign -Wno-newline-eof -Wdeprecated-declarations -Winvalid-offsetof -Wno-conversion
- QMAKE_IOS_CXXFLAGS += -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wc++11-extensions
- QMAKE_IOS_OBJ_CFLAGS += -Wno-deprecated-implementations -Wprotocol -Wno-selector -Wno-strict-selector-match -Wno-undeclared-selector
+# But these only apply to non-ARM targets
+!contains(QT_ARCH, arm): QMAKE_IOS_CFLAGS += -fexceptions -fasm-blocks
- # Warn about unsupported (later than 4.5) Xcode versions
- !lessThan(QMAKE_IOS_XCODE_VERSION, "4.6"): warning("The version of Xcode installed on this system is not recognised - custom compiler settings may be necessary")
-} else {
- if (!lessThan(QMAKE_IOS_XCODE_VERSION, "4.2")) {
- # Clang 3.0 flags
- QMAKE_IOS_CFLAGS += -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits
- } else {
- # Older Clang versions are not supported
- error("Unsupported Xcode version $${QMAKE_IOS_XCODE_VERSION}")
- }
-}
+# Clang 3.1 (and above) flags
+QMAKE_IOS_CFLAGS += -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-implicit-atomic-properties -Wformat -Wno-missing-braces -Wno-unused-function -Wno-unused-label -Wuninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-sign-compare -Wpointer-sign -Wno-newline-eof -Wdeprecated-declarations -Winvalid-offsetof -Wno-conversion
+QMAKE_IOS_CXXFLAGS += -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors
+QMAKE_IOS_OBJ_CFLAGS += -Wno-deprecated-implementations -Wprotocol -Wno-selector -Wno-strict-selector-match -Wno-undeclared-selector
+
+# Warn about unsupported (later than 4.5) Xcode versions
+!lessThan(QMAKE_XCODE_VERSION, "4.7"): warning("The version of Xcode installed on this system is not recognised - custom compiler settings may be necessary")
# Set build flags
QMAKE_CFLAGS += $$QMAKE_IOS_CFLAGS
diff --git a/mkspecs/common/ios/g++.conf b/mkspecs/common/ios/g++.conf
deleted file mode 100644
index 8a1e0b20c0..0000000000
--- a/mkspecs/common/ios/g++.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# compiler settings for iOS g++ compilers
-#
-
-# iOS build flags
-QMAKE_IOS_CFLAGS = -fvisibility=hidden -fexceptions -fmessage-length=0
-QMAKE_IOS_CFLAGS += -Wno-trigraphs -Wreturn-type -Wunused-variable
-QMAKE_IOS_CXXFLAGS = -fvisibility-inlines-hidden
-
-# Device or simulator specific flags
-!*simulator*: QMAKE_IOS_OBJ_CFLAGS =
-else: QMAKE_IOS_OBJ_CFLAGS = -fobjc-abi-version=2 -fobjc-legacy-dispatch
-
-# Set build flags
-QMAKE_CFLAGS += $$QMAKE_IOS_CFLAGS
-QMAKE_CXXFLAGS += $$QMAKE_IOS_CFLAGS $$QMAKE_IOS_CXXFLAGS
-QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_IOS_CFLAGS $$QMAKE_IOS_CXXFLAGS $$QMAKE_IOS_OBJ_CFLAGS
-
-QMAKE_IOS_CFLAGS =
-QMAKE_IOS_CXXFLAGS =
-QMAKE_IOS_OBJ_CFLAGS =
diff --git a/mkspecs/common/ios/llvm.conf b/mkspecs/common/ios/llvm.conf
deleted file mode 100644
index fa2e519dd9..0000000000
--- a/mkspecs/common/ios/llvm.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# compiler settings for iOS llvm-g++ compilers
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-# iOS build flags
-QMAKE_IOS_CFLAGS = -fvisibility=hidden -fpascal-strings -fmessage-length=0
-QMAKE_IOS_CFLAGS += -Wno-trigraphs -Wreturn-type -Wunused-variable
-QMAKE_IOS_CXXFLAGS = -fvisibility-inlines-hidden
-
-# Device or simulator specific flags
-!*simulator*: QMAKE_IOS_OBJ_CFLAGS =
-else: QMAKE_IOS_OBJ_CFLAGS = -fobjc-abi-version=2 -fobjc-legacy-dispatch
-
-# Compiler version specific flags
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") {
- # Xcode 4.3+ specific flags
- QMAKE_IOS_CFLAGS += -Wuninitialized
-}
-
-# Set build flags
-QMAKE_CFLAGS += $$QMAKE_IOS_CFLAGS
-QMAKE_CXXFLAGS += $$QMAKE_IOS_CFLAGS $$QMAKE_IOS_CXXFLAGS
-QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_IOS_CFLAGS $$QMAKE_IOS_CXXFLAGS $$QMAKE_IOS_OBJ_CFLAGS
-
-QMAKE_IOS_CFLAGS =
-QMAKE_IOS_CXXFLAGS =
-QMAKE_IOS_OBJ_CFLAGS =
diff --git a/mkspecs/common/ios/qmake.conf b/mkspecs/common/ios/qmake.conf
index 8ee2575fb4..39465aa765 100644
--- a/mkspecs/common/ios/qmake.conf
+++ b/mkspecs/common/ios/qmake.conf
@@ -1,66 +1,33 @@
#
# Common build settings for all iOS configurations
#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-# QMAKE_IOS_SDK_VERSION - set in mkspecs/common/ios/versions.conf
-# QMAKE_IOSSIMULATOR_SDK_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-# iOS SDK device type
-!*simulator*: QMAKE_IOS_DEVICE_TYPE = iPhoneOS
-else {
- QMAKE_IOS_DEVICE_TYPE = iPhoneSimulator
- # Use simulator SDK version
- QMAKE_IOS_SDK_VERSION = $$QMAKE_IOS_SIMULATOR_SDK_VERSION
- QMAKE_IOS_SIMULATOR_SDK_VERSION =
-}
+QT_QPA_DEFAULT_PLATFORM = ios
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") {
- # Xcode 4.3+ is stored in /Applications
- QMAKE_IOS_XCODE_PATH = /Applications/Xcode.app/Contents
-} else: QMAKE_IOS_XCODE_PATH =
+QMAKE_XCODE_CODE_SIGN_IDENTITY = "iPhone Developer"
-# iOS platform /Developer path
-QMAKE_IOS_DEV_PATH = $$QMAKE_IOS_XCODE_PATH/Developer/Platforms/$${QMAKE_IOS_DEVICE_TYPE}.platform/Developer
-QMAKE_IOS_XCODE_PATH =
-
-# iOS platform SDK path
-QMAKE_IOS_SDK = $$QMAKE_IOS_DEV_PATH/SDKs/$${QMAKE_IOS_DEVICE_TYPE}$${QMAKE_IOS_SDK_VERSION}.sdk
-QMAKE_IOS_DEV_PATH =
-QMAKE_IOS_DEVICE_TYPE =
-
-QMAKE_CFLAGS += -isysroot $$QMAKE_IOS_SDK
-QMAKE_CXXFLAGS += -isysroot $$QMAKE_IOS_SDK
-QMAKE_OBJECTIVE_CFLAGS += -isysroot $$QMAKE_IOS_SDK
-QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_IOS_SDK
-QMAKE_IOS_SDK =
+# iOS build tools
+QMAKE_CC = clang
+QMAKE_CXX = clang++
+QMAKE_FIX_RPATH = install_name_tool -id
+QMAKE_AR = ar cq
+QMAKE_RANLIB = ranlib -s
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
# Basic iOS frameworks needed for any GUI app
QMAKE_LFLAGS += -framework Foundation -framework UIKit -framework QuartzCore -lz
-# OpenGL ES1
-QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_IOS_SDK/System/Library/Frameworks/OpenGLES.framework/Headers
+# No OpenGL ES1
+QMAKE_INCDIR_OPENGL_ES1 =
QMAKE_LIBDIR_OPENGL_ES1 =
-QMAKE_LIBS_OPENGL_ES1 = -framework OpenGLES
+QMAKE_LIBS_OPENGL_ES1 =
# OpenGL ES2
-QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_IOS_SDK/System/Library/Frameworks/OpenGLES.framework/Headers
+QMAKE_INCDIR_OPENGL_ES2 =
QMAKE_LIBDIR_OPENGL_ES2 =
QMAKE_LIBS_OPENGL_ES2 = -framework OpenGLES
# No desktop OpenGL
QMAKE_INCDIR_OPENGL =
QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_OPENGL_QT =
-
-# Compiler-specific flags
-!*-g++* {
- # Objective-C/C++ precompile flags
- QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
- QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
- QMAKE_OBJCXXFLAGS_PRECOMPILE = -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
- QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-}
diff --git a/mkspecs/common/ios/versions.conf b/mkspecs/common/ios/versions.conf
deleted file mode 100644
index b755068769..0000000000
--- a/mkspecs/common/ios/versions.conf
+++ /dev/null
@@ -1,184 +0,0 @@
-#
-# Helper to set build tool & SDK versions for iOS configurations
-#
-# This file sets up the following configuration variables:
-#
-# QMAKE_IOS_XCODE_VERSION - version number of Xcode being used
-# QMAKE_IOS_SDK_VERSION - version number of iOS device SDK
-# QMAKE_IOS_SIMULATOR_SDK_VERSION - version number of iOS simulator SDK
-#
-# Used in:
-#
-# mkspecs/common/ios/clang.conf
-# mkspecs/common/ios/llvm.conf
-# mkspecs/common/ios/qmake.conf
-# mkspecs/unsupported/macx-iosdevice-clang-legacy/qmake.conf
-# mkspecs/unsupported/macx-iosdevice-clang/qmake.conf
-# mkspecs/unsupported/macx-iosdevice-llvm-legacy/qmake.conf
-# mkspecs/unsupported/macx-iosdevice-llvm/qmake.conf
-# mkspecs/unsupported/macx-iosdevice-g++-legacy/qmake.conf
-# mkspecs/unsupported/macx-iossimulator-llvm-legacy/qmake.conf
-# mkspecs/unsupported/macx-iossimulator-llvm/qmake.conf
-# mkspecs/unsupported/macx-iossimulator-g++-legacy/qmake.conf
-#
-
-#
-# IMPORTANT:
-#
-# Xcode versions <= 4.2.x must be installed in /Developer.
-# Xcode versions >= 4.3.x must be installed in /Applications
-#
-# Xcode versions >= 4.10 & < 5.0 and versions >= 10.0 are not supported due to
-# the way the version checks are done here. As Apple (so far) has not used
-# minor version numbers greater than 3 for Xcode, and the Xcode major version
-# has only changed three times in the period 2003-2012, this is viewed as an
-# acceptable limitation.
-#
-
-#
-# Edit values below to match iOS build environment, or leave blank for
-# autodetection (slower!)
-#
-
-# Xcode version used for cross-compiling
-QMAKE_IOS_XCODE_VERSION =
-
-# iOS SDK version used for cross-compiling for iOS devices
-QMAKE_IOS_SDK_VERSION =
-
-# iOS SDK version used for cross-compiling for the iOS simulator
-QMAKE_IOS_SIMULATOR_SDK_VERSION =
-
-#
-# Do not edit values below here if using a pre-built SDK
-#
-
-# Minimum iOS version required on deployment target (if not specified, will
-# default to minimum version that guarantees ARMv7 & OpenGL/ES 2.x).
-#
-# No part of Qt or any known plugin uses features that require iOS versions
-# later than 4.0.
-QMAKE_IPHONEOS_DEPLOYMENT_TARGET = 4.0
-
-###########################################################################
-
-# No Xcode version specified?
-isEmpty(QMAKE_IOS_XCODE_VERSION) {
- # Get version string from installed Xcode
- exists(/Applications/Xcode.app/Contents/Developer) {
- QMAKE_IOS_XCODE_INFO = $$system(/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -version)
- } else: QMAKE_IOS_XCODE_INFO = $$system(/Developer/usr/bin/xcodebuild -version)
-
- # Extract Xcode version number from output
- QMAKE_IOS_XCODE_VERSION = $$member(QMAKE_IOS_XCODE_INFO, 1)
- QMAKE_IOS_XCODE_INFO =
-}
-
-# Make sure Xcode version is valid
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") {
- # Xcode 4.3+ is stored in /Applications
- QMAKE_IOS_PLATFORM_PATH = /Applications/Xcode.app/Contents/Developer/Platforms
-
- # Make sure Xcode path is valid
- !exists($$QMAKE_IOS_PLATFORM_PATH): error("Xcode is not installed in /Applications/Xcode.app! Edit mkspecs/common/ios/versions.conf to specify version installed.")
-} else {
- # Older Xcode versions are stored in /Developer
- QMAKE_IOS_PLATFORM_PATH = /Developer/Platforms
-
- # Make sure Xcode path is valid
- !exists($$QMAKE_IOS_PLATFORM_PATH): error("Xcode is not installed in /Developer! Edit mkspecs/common/ios/versions.conf to specify version installed.")
-}
-
-# iOS 4.3 is the preferred version as it is the earliest version that is armv7/gles2 only
-QMAKE_IPHONEOS_PREFERRED_TARGET = 4.3
-
-# Building for iOS device?
-!*simulator* {
- # No iOS SDK version specified?
- isEmpty(QMAKE_IOS_SDK_VERSION) {
- # Get version string from installed Xcode
- !lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") {
- QMAKE_IOS_SDK_INFO = $$system(/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -showsdks)
- } else: QMAKE_IOS_SDK_INFO = $$system(/Developer/usr/bin/xcodebuild -showsdks)
-
- # Get names of installed device SDKs
- QMAKE_IOS_SDK_INFO = $$find(QMAKE_IOS_SDK_INFO, ^iphoneos)
- for(v, QMAKE_IOS_SDK_INFO): {
- # Extract SDK version number from output
- v = $$replace(v,iphoneos,)
-
- # Use latest SDK version
- greaterThan(v, $$QMAKE_IOS_SDK_VERSION): QMAKE_IOS_SDK_VERSION = $$v
- }
- QMAKE_IOS_SDK_INFO =
- }
-
- # Make sure iOS SDK version is valid
- !exists($$QMAKE_IOS_PLATFORM_PATH/iPhoneOS.platform/Developer/SDKs/iPhoneOS$${QMAKE_IOS_SDK_VERSION}.sdk) {
- error("iOS $$QMAKE_IOS_SDK_VERSION SDK not found! Edit mkspecs/common/ios/versions.conf to specify version installed.")
- }
-
- # No deployment target specified?
- isEmpty(QMAKE_IPHONEOS_DEPLOYMENT_TARGET) {
- # Use SDK version for iOS versions < preferred
- lessThan(QMAKE_IOS_SDK_VERSION, $$QMAKE_IPHONEOS_PREFERRED_TARGET) {
- QMAKE_IPHONEOS_DEPLOYMENT_TARGET = $$QMAKE_IOS_SDK_VERSION
- } else: QMAKE_IPHONEOS_DEPLOYMENT_TARGET = $$QMAKE_IPHONEOS_PREFERRED_TARGET
- }
-
- # Make sure iOS SDK version is >= iOS target version
- !lessThan(QMAKE_IPHONEOS_DEPLOYMENT_TARGET, $$QMAKE_IOS_SDK_VERSION) {
- error("Target iOS version is greater that iOS SDK version $$QMAKE_IOS_SDK_VERSION! Edit mkspecs/common/ios/versions.conf to specify target iOS version.")
- }
-# Building for iOS simulator
-} else {
- # No iOS simulator SDK version specified?
- isEmpty(QMAKE_IOS_SIMULATOR_SDK_VERSION) {
- # Get version string from installed Xcode
- !lessThan(QMAKE_IOS_XCODE_VERSION, "4.3") {
- QMAKE_IOS_SDK_INFO = $$system(/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -showsdks)
- } else: QMAKE_IOS_SDK_INFO = $$system(/Developer/usr/bin/xcodebuild -showsdks)
-
- # Get names of installed device SDKs
- QMAKE_IOS_SDK_INFO = $$find(QMAKE_IOS_SDK_INFO, ^iphonesimulator)
- for(v, QMAKE_IOS_SDK_INFO): {
- # Extract SDK version number from output
- v = $$replace(v,iphonesimulator,)
-
- # Use latest SDK version
- greaterThan(v, $$QMAKE_IOS_SIMULATOR_SDK_VERSION): QMAKE_IOS_SIMULATOR_SDK_VERSION = $$v
- }
- QMAKE_IOS_SDK_INFO =
- }
-
- # Make sure iOS simulator SDK version is valid
- !exists($$QMAKE_IOS_PLATFORM_PATH/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator$${QMAKE_IOS_SIMULATOR_SDK_VERSION}.sdk) {
- error("iOS $$QMAKE_IOS_SIMULATOR_SDK_VERSION simulator SDK not found! Edit mkspecs/common/ios/versions.conf to specify version installed.")
- }
-
- # No deployment target specified?
- isEmpty(QMAKE_IPHONEOS_DEPLOYMENT_TARGET) {
- # Use SDK version for iOS versions < preferred
- lessThan(QMAKE_IOS_SIMULATOR_SDK_VERSION, $$QMAKE_IPHONEOS_PREFERRED_TARGET) {
- QMAKE_IPHONEOS_DEPLOYMENT_TARGET = $$QMAKE_IOS_SIMULATOR_SDK_VERSION
- } else: QMAKE_IPHONEOS_DEPLOYMENT_TARGET = $$QMAKE_IPHONEOS_PREFERRED_TARGET
- }
-
- # Make sure iOS simulator SDK version is >= iOS target version
- !lessThan(QMAKE_IPHONEOS_DEPLOYMENT_TARGET, $$QMAKE_IOS_SIMULATOR_SDK_VERSION) {
- error("Target iOS version is greater that iOS simulator SDK version $$QMAKE_IOS_SIMULATOR_SDK_VERSION! Edit mkspecs/common/ios/versions.conf to specify target iOS version.")
- }
-}
-
-QMAKE_IPHONEOS_PREFERRED_TARGET =
-QMAKE_IOS_PLATFORM_PATH =
-
-# Set deployment target
-QMAKE_IOS_VERSION_FLAGS = -miphoneos-version-min=$$QMAKE_IPHONEOS_DEPLOYMENT_TARGET
-
-# Set build flags
-QMAKE_CFLAGS += $$QMAKE_IOS_VERSION_FLAGS
-QMAKE_CXXFLAGS += $$QMAKE_IOS_VERSION_FLAGS
-QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_IOS_VERSION_FLAGS
-QMAKE_LFLAGS += $$QMAKE_IOS_VERSION_FLAGS
-QMAKE_IOS_VERSION_FLAGS =
diff --git a/mkspecs/common/linux-android.conf b/mkspecs/common/linux-android.conf
index 5b1a55d0f5..a93ec68e01 100644
--- a/mkspecs/common/linux-android.conf
+++ b/mkspecs/common/linux-android.conf
@@ -6,7 +6,6 @@ QMAKE_PLATFORM += android
include(linux.conf)
include(gcc-base-unix.conf)
-DEFINES += Q_OS_LINUX_ANDROID
DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG
QT_QPA_DEFAULT_PLATFORM = minimal
@@ -110,7 +109,6 @@ QMAKE_LIBS_QT_OPENGL =
QMAKE_LIBS_QTOPIA =
QMAKE_LIBS_THREAD =
QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_OPENGL_QT =
QMAKE_LIBS_OPENGL_ES1 = -lGLESv1_CM
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 $$QMAKE_LIBS
diff --git a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf
index 107aeb74eb..83096dd3da 100644
--- a/mkspecs/common/linux.conf
+++ b/mkspecs/common/linux.conf
@@ -17,9 +17,9 @@ QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
-QMAKE_INCDIR_EGL =
+QMAKE_INCDIR_EGL =
QMAKE_LIBDIR_EGL =
-QMAKE_INCDIR_OPENVG =
+QMAKE_INCDIR_OPENVG =
QMAKE_LIBDIR_OPENVG =
QMAKE_LIBS =
@@ -28,7 +28,6 @@ QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_EGL = -lEGL
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_OPENGL_ES1 = -lGLESv1_CM
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
QMAKE_LIBS_OPENVG = -lOpenVG
diff --git a/mkspecs/common/mac-clang-libc++-minimum-version.conf b/mkspecs/common/mac-clang-libc++-minimum-version.conf
deleted file mode 100644
index 0941970b13..0000000000
--- a/mkspecs/common/mac-clang-libc++-minimum-version.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-# clang libc++ requires 10.7
-QMAKE_CFLAGS += -mmacosx-version-min=10.7
-QMAKE_CXXFLAGS += -mmacosx-version-min=10.7
-QMAKE_OBJECTIVE_CFLAGS += -mmacosx-version-min=10.7
-QMAKE_LFLAGS += -mmacosx-version-min=10.7
diff --git a/mkspecs/common/mac-minimum-version.conf b/mkspecs/common/mac-minimum-version.conf
deleted file mode 100644
index acb4132cb6..0000000000
--- a/mkspecs/common/mac-minimum-version.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-QMAKE_CFLAGS += -mmacosx-version-min=10.6
-QMAKE_LFLAGS += -mmacosx-version-min=10.6
-QMAKE_CXXFLAGS += -mmacosx-version-min=10.6
-QMAKE_OBJECTIVE_CFLAGS += -mmacosx-version-min=10.6
diff --git a/mkspecs/common/mac.conf b/mkspecs/common/mac.conf
index e318cb775e..5d7cb1a91b 100644
--- a/mkspecs/common/mac.conf
+++ b/mkspecs/common/mac.conf
@@ -1,30 +1,29 @@
#
-# qmake configuration for common Mac OS X
+# qmake configuration for common Mac OS (OSX and iOS)
#
-!load(device_config) {
- error(Could not successfully load device configuration)
-}
-QMAKE_PLATFORM += macx mac
+!load(device_config): error(Could not successfully load device configuration)
-QMAKE_RESOURCE = /Developer/Tools/Rez
+QMAKE_PLATFORM += mac
-QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_RESOURCE = /Developer/Tools/Rez
+QMAKE_EXTENSION_SHLIB = dylib
+QMAKE_LIBDIR =
-QMAKE_LIBDIR =
-QMAKE_INCDIR_OPENGL = $$QMAKE_MAC_SDK/System/Library/Frameworks/OpenGL.framework/Headers \
- $$QMAKE_MAC_SDK/System/Library/Frameworks/AGL.framework/Headers/
+# sdk.prf will prefix the proper SDK sysroot
+QMAKE_INCDIR_OPENGL = \
+ /System/Library/Frameworks/OpenGL.framework/Headers \
+ /System/Library/Frameworks/AGL.framework/Headers/
-QMAKE_FIX_RPATH = install_name_tool -id
+QMAKE_FIX_RPATH = install_name_tool -id
-QMAKE_LFLAGS_RPATH =
+QMAKE_LFLAGS_RPATH =
-QMAKE_LIBS_DYNLOAD =
-QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL
-QMAKE_LIBS_OPENGL_QT = $$QMAKE_LIBS_OPENGL
-QMAKE_LIBS_THREAD =
+QMAKE_LIBS_DYNLOAD =
+QMAKE_LIBS_OPENGL = -framework OpenGL -framework AGL
+QMAKE_LIBS_THREAD =
-QMAKE_AR = ar cq
-QMAKE_RANLIB = ranlib -s
+QMAKE_AR = ar cq
+QMAKE_RANLIB = ranlib -s
include(unix.conf)
diff --git a/mkspecs/common/mac/qplatformdefs.h b/mkspecs/common/mac/qplatformdefs.h
index 88a71dbd3e..7ee337cce4 100644
--- a/mkspecs/common/mac/qplatformdefs.h
+++ b/mkspecs/common/mac/qplatformdefs.h
@@ -42,8 +42,6 @@
#ifndef QPLATFORMDEFS_H
#define QPLATFORMDEFS_H
-#define QT_QPA_DEFAULT_PLATFORM_NAME "cocoa"
-
// Get Qt defines/settings
#include "qglobal.h"
@@ -85,11 +83,7 @@
#define QT_OPEN_LARGEFILE 0
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
#define QT_SOCKLEN_T socklen_t
-#else
-#define QT_SOCKLEN_T int
-#endif
#define QT_SIGNAL_IGNORE (void (*)(int))1
diff --git a/mkspecs/common/macx.conf b/mkspecs/common/macx.conf
new file mode 100644
index 0000000000..eb39d1cf8d
--- /dev/null
+++ b/mkspecs/common/macx.conf
@@ -0,0 +1,8 @@
+#
+# qmake configuration for common Mac OS X
+#
+
+QMAKE_PLATFORM += macx
+QMAKE_MAC_SDK = macosx
+
+include(mac.conf)
diff --git a/mkspecs/common/wince/qmake.conf b/mkspecs/common/wince/qmake.conf
index 46f002a360..a0ef0d0c83 100644
--- a/mkspecs/common/wince/qmake.conf
+++ b/mkspecs/common/wince/qmake.conf
@@ -60,8 +60,8 @@ QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_LTCG = /LTCG
QMAKE_LIBS_NETWORK = ws2.lib
-QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_COMPAT =
+QMAKE_LIBS_OPENGL =
+QMAKE_LIBS_COMPAT =
QMAKE_LIBS_EGL = libEGL.lib
QMAKE_LIBS_OPENGL_ES1 = libGLES_CM.lib
diff --git a/mkspecs/common/xcode.conf b/mkspecs/common/xcode.conf
new file mode 100644
index 0000000000..9da6406f7f
--- /dev/null
+++ b/mkspecs/common/xcode.conf
@@ -0,0 +1,17 @@
+#
+# qmake configuration for Xcode
+#
+
+# Get path of Xcode's Developer directory
+QMAKE_XCODE_DEVELOPER_PATH = $$system("xcode-select --print-path")
+isEmpty(QMAKE_XCODE_DEVELOPER_PATH): \
+ error("Xcode path is not set. Please use xcode-select to choose Xcode installation path.")
+
+# Make sure Xcode path is valid
+!exists($$QMAKE_XCODE_DEVELOPER_PATH): \
+ error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use xcode-select to choose Xcode installation path.")
+
+# Extract Xcode version using xcodebuild
+xcode_version = $$system("xcodebuild -version")
+QMAKE_XCODE_VERSION = $$member(xcode_version, 1)
+unset(xcode_version)
diff --git a/mkspecs/cygwin-g++/qmake.conf b/mkspecs/cygwin-g++/qmake.conf
index 3c53122707..fe9691cf39 100644
--- a/mkspecs/cygwin-g++/qmake.conf
+++ b/mkspecs/cygwin-g++/qmake.conf
@@ -4,74 +4,73 @@
# Written for Qt/X11 on Windows using Cygwin's POSIX API
#
-MAKEFILE_GENERATOR = UNIX
+MAKEFILE_GENERATOR = UNIX
QMAKE_PLATFORM = cygwin unix posix
CONFIG += incremental
-QMAKE_INCREMENTAL_STYLE = sublib
+QMAKE_INCREMENTAL_STYLE = sublib
-QMAKE_COMPILER = gcc
+QMAKE_COMPILER = gcc
-QMAKE_CC = gcc
-QMAKE_LEX = flex
-QMAKE_LEXFLAGS =
-QMAKE_YACC = byacc
-QMAKE_YACCFLAGS = -d
-QMAKE_CFLAGS = -pipe
-QMAKE_CFLAGS_DEPS = -M
-QMAKE_CFLAGS_WARN_ON = -Wall -W
-QMAKE_CFLAGS_WARN_OFF = -w
-QMAKE_CFLAGS_RELEASE = -O2
-QMAKE_CFLAGS_DEBUG = -g
-QMAKE_CFLAGS_SHLIB =
-QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_THREAD = -D_REENTRANT
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -pipe
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB =
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
-QMAKE_CXX = g++
-QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
-QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
-QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
-QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
-QMAKE_INCDIR =
-QMAKE_LIBDIR =
-QMAKE_INCDIR_X11 = /usr/X11R6/include
-QMAKE_LIBDIR_X11 = /usr/X11R6/lib
-QMAKE_INCDIR_OPENGL = /usr/X11R6/include
-QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/X11R6/include
+QMAKE_LIBDIR_X11 = /usr/X11R6/lib
+QMAKE_INCDIR_OPENGL = /usr/X11R6/include
+QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib
-QMAKE_LINK = g++
-QMAKE_LINK_SHLIB = g++
-QMAKE_LINK_C = gcc
-QMAKE_LINK_C_SHLIB = gcc
-QMAKE_LFLAGS =
-QMAKE_LFLAGS_RELEASE =
-QMAKE_LFLAGS_DEBUG =
-QMAKE_LFLAGS_SHLIB = -shared
-QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME = -Wl,-soname,
-QMAKE_LFLAGS_THREAD =
-QMAKE_LFLAGS_RPATH = -Wl,-rpath,
-QMAKE_CYGWIN_SHLIB = 1
-QMAKE_CYGWIN_EXE = 1
-
-QMAKE_LIBS =
-QMAKE_LIBS_DYNLOAD = -ldl
-QMAKE_LIBS_X11 = -lXext -lX11
-QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
-QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LINK_C = gcc
+QMAKE_LINK_C_SHLIB = gcc
+QMAKE_LFLAGS =
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,-soname,
+QMAKE_LFLAGS_THREAD =
+QMAKE_LFLAGS_RPATH = -Wl,-rpath,
+QMAKE_CYGWIN_SHLIB = 1
+QMAKE_CYGWIN_EXE = 1
+
+QMAKE_LIBS =
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_OPENGL = -lGL
+QMAKE_LIBS_THREAD = -lpthread
QMAKE_PREFIX_SHLIB = lib
QMAKE_PREFIX_STATICLIB = lib
QMAKE_EXTENSION_STATICLIB = a
-QMAKE_AR = ar cqs
+QMAKE_AR = ar cqs
QMAKE_OBJCOPY = objcopy
-QMAKE_RANLIB =
+QMAKE_RANLIB =
include(../common/shell-unix.conf)
load(qt_config)
diff --git a/mkspecs/darwin-g++/qmake.conf b/mkspecs/darwin-g++/qmake.conf
index 57bfb94ba2..2e0fd0276c 100644
--- a/mkspecs/darwin-g++/qmake.conf
+++ b/mkspecs/darwin-g++/qmake.conf
@@ -72,7 +72,6 @@ QMAKE_LFLAGS_RPATH =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_AR = ar cq
diff --git a/mkspecs/devices/blackberry-playbook-armv7le-qcc/qmake.conf b/mkspecs/devices/blackberry-playbook-armv7le-qcc/qmake.conf
index 07bc437e34..cc7435d1dc 100644
--- a/mkspecs/devices/blackberry-playbook-armv7le-qcc/qmake.conf
+++ b/mkspecs/devices/blackberry-playbook-armv7le-qcc/qmake.conf
@@ -5,3 +5,4 @@
include(../../blackberry-armv7le-qcc/qmake.conf)
DEFINES += Q_OS_BLACKBERRY_TABLET
+CONFIG += blackberry-playbook
diff --git a/mkspecs/devices/blackberry-playbook-x86-qcc/qmake.conf b/mkspecs/devices/blackberry-playbook-x86-qcc/qmake.conf
index 054e634ac8..ed9f7f33c7 100644
--- a/mkspecs/devices/blackberry-playbook-x86-qcc/qmake.conf
+++ b/mkspecs/devices/blackberry-playbook-x86-qcc/qmake.conf
@@ -5,3 +5,4 @@
include(../../blackberry-x86-qcc/qmake.conf)
DEFINES += Q_OS_BLACKBERRY_TABLET
+CONFIG += blackberry-playbook
diff --git a/mkspecs/features/android.prf b/mkspecs/features/android.prf
new file mode 100644
index 0000000000..2a3086d4ad
--- /dev/null
+++ b/mkspecs/features/android.prf
@@ -0,0 +1,14 @@
+contains(TEMPLATE, ".*app") {
+ !android_app {
+ !contains(TARGET, ".so"): TARGET = lib$${TARGET}.so
+ QMAKE_LFLAGS += -Wl,-soname,$$TARGET
+ }
+}
+!QTDIR_build:android_install {
+ isEmpty(QT_BUILD_TREE) {
+ target.path=/libs/$$ANDROID_TARGET_ARCH/
+ } else {
+ target.path = /
+ }
+ INSTALLS *= target
+}
diff --git a/mkspecs/features/configure.prf b/mkspecs/features/configure.prf
index 39144e7216..b4569df6d5 100644
--- a/mkspecs/features/configure.prf
+++ b/mkspecs/features/configure.prf
@@ -7,6 +7,9 @@ equals(MAKEFILE_GENERATOR, UNIX) {
QMAKE_MAKE = mingw32-make
} else:if(equals(MAKEFILE_GENERATOR, MSVC.NET)|equals(MAKEFILE_GENERATOR, MSBUILD)) {
QMAKE_MAKE = nmake
+} else:ios {
+ # iOS unsets MAKEFILE_GENERATOR in its default_pre.prf
+ QMAKE_MAKE = make
} else {
error("Configure tests are not supported with the $$MAKEFILE_GENERATOR Makefile generator.")
}
diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf
index 428a3a4d43..9aef37472f 100644
--- a/mkspecs/features/create_cmake.prf
+++ b/mkspecs/features/create_cmake.prf
@@ -69,7 +69,7 @@ CMAKE_MKSPEC = $$[QMAKE_XSPEC]
CMAKE_QT_STEM = Qt$$eval(QT.$${MODULE}.MAJOR_VERSION)$${CMAKE_MODULE_NAME}$${QT_LIBINFIX}
-macx {
+mac {
!isEmpty(CMAKE_STATIC_TYPE) {
CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.a
CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a
diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
index cdd200e80b..c756455dd2 100644
--- a/mkspecs/features/default_post.prf
+++ b/mkspecs/features/default_post.prf
@@ -47,6 +47,14 @@ incredibuild_xge {
CONFIG = incredibuild_xge $$CONFIG
}
+silent {
+ # Ensure that we process silent.prf last, as it will mangle QMAKE_CXX
+ # and friends in a way that some of the other features (sdk.prf and
+ # simd.prf eg) do not handle.
+ CONFIG -= silent
+ CONFIG = silent $$CONFIG
+}
+
force_debug_info:win32 {
load(resolve_target)
QMAKE_CLEAN += $$replace(QMAKE_RESOLVED_TARGET, ...$, pdb) # for the debug case it is hardcoded in qmake
diff --git a/mkspecs/features/ios/default_post.prf b/mkspecs/features/ios/default_post.prf
new file mode 100644
index 0000000000..e9d2149351
--- /dev/null
+++ b/mkspecs/features/ios/default_post.prf
@@ -0,0 +1,69 @@
+
+CONFIG(qt):contains(QT, gui):equals(TEMPLATE, app): CONFIG += gui_app
+
+isEmpty(MAKEFILE_GENERATOR) {
+ gui_app:app_bundle: \
+ # For applications we want Xcode project files
+ MAKEFILE_GENERATOR = XCODE
+ else: \
+ # For libs, etc we still want regular Makefiles
+ MAKEFILE_GENERATOR = UNIX
+}
+
+gui_app {
+ # We have to do the link and dependency resolution for the platform plugin
+ # manually, since QTPLUGIN and the prl lookup logic does not support
+ # the -force_load link style. The -force_load option ensures that all
+ # symbols from the static library are included, not just the ones the
+ # linker have seen a use for so far. We need this because we load the platform
+ # plugin from the platform plugin itself, using Q_IMPORT_PLUGIN.
+ lib_path_and_base = $$[QT_INSTALL_PLUGINS/get]/platforms/libqios$$qtPlatformTargetSuffix()
+ LIBS += "-force_load $${lib_path_and_base}.$${QMAKE_EXTENSION_STATICLIB}"
+ LIBS += $$fromfile($${lib_path_and_base}.prl, QMAKE_PRL_LIBS)
+
+ # Which means we don't want the auto-generated import for the platform plugin
+ CONFIG -= import_qpa_plugin
+
+ !no_main_wrapper {
+ # We link the iosmain library manually as well, since it's not really a plugin
+ lib_name = qiosmain
+ lib_path_and_base = $$[QT_INSTALL_PLUGINS/get]/platforms/lib$${lib_name}$$qtPlatformTargetSuffix()
+ LIBS += -L$$[QT_INSTALL_PLUGINS/get]/platforms -l$${lib_name}$$qtPlatformTargetSuffix()
+ LIBS += $$fromfile($${lib_path_and_base}.prl, QMAKE_PRL_LIBS)
+ DEFINES += main=qt_main
+ }
+}
+
+contains(MAKEFILE_GENERATOR, XCODE) {
+ ios_device_family.name = TARGETED_DEVICE_FAMILY
+ ios_device_family.value = $$QMAKE_IOS_TARGETED_DEVICE_FAMILY
+ QMAKE_MAC_XCODE_SETTINGS += ios_device_family
+}
+
+isEmpty(QT_ARCH) {
+ # The iPhoneOS and iPhoneSimulator targets share the same toolchain,
+ # so when configure runs the arch tests it passes the correct sysroot,
+ # but we fail to pick up the architecture since we're not passing -arch
+ # yet. Xcode does not seem to have a way to run the shared toolchain
+ # in a way that will automatically do this (for example xcrun -sdk).
+ contains(QMAKE_MAC_SDK, iphoneos.*): QT_ARCH = armv7
+ else: QT_ARCH = i386 # Simulator
+} else {
+ # Fix up the QT_ARCH to be more specific
+ equals(QT_ARCH, arm) {
+ # Samsung S5PC100, Apple A4, A5, A5X
+ QT_ARCH = armv7
+
+ # FIXME: How do we support armv7s when Qt can't do universal builds?
+ }
+}
+
+!equals(MAKEFILE_GENERATOR, XCODE) {
+ arch_flag = -arch $$QT_ARCH
+ QMAKE_CFLAGS += $$arch_flag
+ QMAKE_CXXFLAGS += $$arch_flag
+ QMAKE_OBJECTIVE_CFLAGS += $$arch_flag
+ QMAKE_LFLAGS += $$arch_flag
+}
+
+load(default_post)
diff --git a/mkspecs/features/ios/default_pre.prf b/mkspecs/features/ios/default_pre.prf
new file mode 100644
index 0000000000..e2956bd77d
--- /dev/null
+++ b/mkspecs/features/ios/default_pre.prf
@@ -0,0 +1,4 @@
+# Unset makefile generator, so we can auto-detect value in default_post
+unset(MAKEFILE_GENERATOR)
+
+load(default_pre)
diff --git a/mkspecs/features/java.prf b/mkspecs/features/java.prf
new file mode 100644
index 0000000000..05350db48d
--- /dev/null
+++ b/mkspecs/features/java.prf
@@ -0,0 +1,61 @@
+TEMPLATE = lib
+android {
+ isEmpty(SDK_ROOT): SDK_ROOT = $$(ANDROID_SDK_ROOT)
+ isEmpty(SDK_ROOT): SDK_ROOT = $$DEFAULT_ANDROID_SDK_ROOT
+ isEmpty(API_VERSION) {
+ API_VERSION = $$(ANDROID_API_VERSION)
+ isEmpty(API_VERSION): API_VERSION = android-10
+ }
+
+ !exists($$SDK_ROOT/platforms/$$API_VERSION/android.jar) {
+ error("The Path $$SDK_ROOT/platforms/$$API_VERSION/android.jar does not exist. Make sure the ANDROID_SDK_ROOT and ANDROID_API_VERSION environment variables are correctly set.")
+ }
+ JAVACLASSPATH += $$SDK_ROOT/platforms/$$API_VERSION/android.jar
+
+ # FIXME: This is a hack to work around some hardcoded values in the android.prf. The
+ # android.prf should be fixed and this should be removed.
+ CONFIG += android_app
+}
+
+isEmpty(CLASS_DIR): CLASS_DIR = .classes
+
+CONFIG -= qt
+
+# Without these, qmake adds a name prefix and versioning postfixes (as well as file
+# links) to the target. This is hardcoded in the qmake code, so for now we use
+# the plugin configs to get what we want.
+CONFIG += plugin no_plugin_name_prefix
+
+javac.input = JAVASOURCES
+javac.output = $$CLASS_DIR
+javac.CONFIG += combine
+javac.commands = javac -source 6 -target 6 -cp $$shell_quote($$join(JAVACLASSPATH, ":")) -d $$shell_quote($$CLASS_DIR) ${QMAKE_FILE_IN}
+# Force rebuild every time, because we don't know the paths of the destination files
+# as they depend on the code.
+javac.depends = FORCE
+QMAKE_EXTRA_COMPILERS += javac
+
+mkpath($$absolute_path($$CLASS_DIR, $$OUT_PWD)) | error("Aborting.")
+
+# Disable all linker flags since we are overriding the regular linker
+QMAKE_LFLAGS =
+QMAKE_CFLAGS =
+QMAKE_LFLAGS_RPATH =
+QMAKE_LFLAGS_PLUGIN =
+QMAKE_LIBS =
+QMAKE_LIBS_OPENGL_ES2 =
+QMAKE_LIBDIR =
+QMAKE_EXTENSION_SHLIB = jar
+
+# Override linker with dex (for Android) or jar (for other java builds)
+android {
+ QMAKE_LINK_O_FLAG = --output=
+ QMAKE_LINK = $$SDK_ROOT/platform-tools/dx --dex
+} else {
+ QMAKE_LINK_O_FLAG = "cf "
+ QMAKE_LINK = jar
+}
+
+# Force link step to always happen, since we are always updating the
+# .class files
+PRE_TARGETDEPS += FORCE
diff --git a/mkspecs/features/mac/sdk.prf b/mkspecs/features/mac/sdk.prf
index 5eab94896b..eaa3108a8b 100644
--- a/mkspecs/features/mac/sdk.prf
+++ b/mkspecs/features/mac/sdk.prf
@@ -1,8 +1,53 @@
-!isEmpty(QMAKE_MAC_SDK) {
- !macx-xcode:!macx-pbuilder {
- QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK
- QMAKE_OBJECTIVE_CFLAGS += -isysroot $$QMAKE_MAC_SDK
- QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK
- QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK
- }
+
+isEmpty(QMAKE_MAC_SDK): \
+ error("QMAKE_MAC_SDK must be set when using CONFIG += sdk.")
+
+contains(QMAKE_MAC_SDK, .*/.*): \
+ error("QMAKE_MAC_SDK can only contain short-form SDK names (eg. macosx, iphoneos)")
+
+QMAKE_MAC_SDK_PATH = $$system("xcodebuild -sdk $$QMAKE_MAC_SDK -version Path 2>/dev/null")
+isEmpty(QMAKE_MAC_SDK_PATH): error("Could not resolve SDK path for \'$$QMAKE_MAC_SDK\'")
+
+!equals(MAKEFILE_GENERATOR, XCODE) {
+ QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH
+ QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH
+ QMAKE_OBJECTIVE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH
+ QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK_PATH
+}
+
+sysrootified =
+for(val, QMAKE_INCDIR_OPENGL): sysrootified += $${QMAKE_MAC_SDK_PATH}$$val
+QMAKE_INCDIR_OPENGL = $$sysrootified
+
+# Resolve SDK version of various tools
+for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_LINK QMAKE_LINK_SHLIB)) {
+ value = $$eval($$tool)
+ isEmpty(value): next()
+
+ sysrooted = $$system("xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value)")
+ $$tool = $$sysrooted $$member(value, 1, -1)
+}
+
+# We use xml as the output format instead of json since plutil on 10.6 does not have that option
+QMAKE_MAC_PLATFORM_NAME = $$system("plutil -convert xml1 \"$$QMAKE_MAC_SDK_PATH/SDKSettings.plist\" -o - | " \
+ "sed '/^<!DOCTYPE/d' | " \ # Don't look up http://www.apple.com/DTDs/PropertyList-1.0.dtd
+ "PERL5LIB= xpath 'string(//key[.=\"PLATFORM_NAME\"]/following-sibling::*[1])' 2>&1 | " \
+ "sed 's/.*Value: \\(.*\\)/\\1/'")
+
+isEmpty(QMAKE_MAC_PLATFORM_NAME): error("Could not resolve platform name for SDK '$$QMAKE_MAC_SDK'")
+
+!equals(MAKEFILE_GENERATOR, XCODE) {
+ # FIXME: Get the version_min_flag out of the platform's 'Native Build System.xcspec'
+ version_identifier = $$replace(QMAKE_MAC_PLATFORM_NAME, iphonesimulator, ios-simulator)
+
+ ios:!host_build: \
+ deployment_target = $$QMAKE_IOS_DEPLOYMENT_TARGET
+ else: \
+ deployment_target = $$QMAKE_MACOSX_DEPLOYMENT_TARGET
+
+ version_min_flag = -m$${version_identifier}-version-min=$$deployment_target
+ QMAKE_CFLAGS += $$version_min_flag
+ QMAKE_CXXFLAGS += $$version_min_flag
+ QMAKE_OBJECTIVE_CFLAGS += $$version_min_flag
+ QMAKE_LFLAGS += $$version_min_flag
}
diff --git a/mkspecs/features/qml_plugin.prf b/mkspecs/features/qml_plugin.prf
index f9beabdc18..70c3bd6b66 100644
--- a/mkspecs/features/qml_plugin.prf
+++ b/mkspecs/features/qml_plugin.prf
@@ -18,12 +18,8 @@ if(win32|mac):!macx-xcode {
contains(QT_CONFIG, debug_and_release):CONFIG += debug_and_release
contains(QT_CONFIG, build_all):CONFIG += build_all
}
-contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
-contains(QT_CONFIG, separate_debug_info):CONFIG += separate_debug_info
-contains(QT_CONFIG, separate_debug_info_nocopy):CONFIG += separate_debug_info_nocopy
-contains(QT_CONFIG, c++11):CONFIG += c++11
-isEmpty(CXX_MODULE) {
+!no_cxx_module:isEmpty(CXX_MODULE) {
CXX_MODULE = $$TARGET
TARGET = declarative_$${TARGET}
}
@@ -34,11 +30,13 @@ exists($$QMLTYPEFILE): QML_FILES += $$QMLTYPEFILE
# Install rules
+load(qt_build_paths)
+
qml1_target {
- DESTDIR = $$eval(QT.$${CXX_MODULE}.imports)/$$TARGETPATH
+ DESTDIR = $$MODULE_BASE_OUTDIR/imports/$$TARGETPATH
instbase = $$[QT_INSTALL_IMPORTS]
} else {
- DESTDIR = $$eval(QT.$${CXX_MODULE}.qml)/$$TARGETPATH
+ DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH
instbase = $$[QT_INSTALL_QML]
}
@@ -50,6 +48,7 @@ INSTALLS += target
TARGET = $$qtLibraryTarget($$TARGET)
load(qt_targets)
+load(qt_common)
# plugins.qmltypes is used by Qt Creator for syntax highlighting and the QML code model. It needs
# to be regenerated whenever the QML elements exported by the plugin change. This cannot be done
@@ -61,7 +60,14 @@ load(qt_targets)
#
!cross_compile {
build_pass|!debug_and_release {
- isEmpty(IMPORT_VERSION): IMPORT_VERSION = $$eval(QT.$${CXX_MODULE}.MAJOR_VERSION).$$eval(QT.$${CXX_MODULE}.MINOR_VERSION)
+ isEmpty(IMPORT_VERSION) {
+ no_cxx_module {
+ IMPORT_VERSION = $$replace(MODULE_VERSION, ^(\\d+\\.\\d+).*, \\1)
+ isEmpty(IMPORT_VERSION): error("Must set IMPORT_VERSION")
+ } else {
+ IMPORT_VERSION = $$eval(QT.$${CXX_MODULE}.MAJOR_VERSION).$$eval(QT.$${CXX_MODULE}.MINOR_VERSION)
+ }
+ }
load(resolve_target)
qml1_target: \
@@ -94,7 +100,7 @@ unix|win32-g++* {
!isEmpty(_QMAKE_SUPER_CACHE_): \
lib_replace.match = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*/lib
else: \
- lib_replace.match = $$eval(QT.$${CXX_MODULE}.libs)
+ lib_replace.match = $$MODULE_BASE_OUTDIR
lib_replace.replace = $$[QT_INSTALL_LIBS/raw]
QMAKE_PRL_INSTALL_REPLACE += lib_replace
}
diff --git a/mkspecs/features/qmltestcase.prf b/mkspecs/features/qmltestcase.prf
index 71e70e06a4..335ba90009 100644
--- a/mkspecs/features/qmltestcase.prf
+++ b/mkspecs/features/qmltestcase.prf
@@ -2,7 +2,7 @@ CONFIG += testcase
QT += qml qmltest
-macx: CONFIG -= app_bundle
+mac: CONFIG -= app_bundle
# If the .pro file specified an IMPORTPATH, then add that to
# the command-line when the test is run.
diff --git a/mkspecs/features/qpa/basicunixfontdatabase.prf b/mkspecs/features/qpa/basicunixfontdatabase.prf
index 65490e03a8..261eadb5d0 100644
--- a/mkspecs/features/qpa/basicunixfontdatabase.prf
+++ b/mkspecs/features/qpa/basicunixfontdatabase.prf
@@ -1,5 +1,3 @@
-DEFINES += QT_COMPILES_IN_HARFBUZZ
-
contains(QT_CONFIG, system-freetype) {
LIBS += -lfreetype
}
diff --git a/mkspecs/features/qpa/genericunixfontdatabase.prf b/mkspecs/features/qpa/genericunixfontdatabase.prf
index 36a358271c..fc11bea470 100644
--- a/mkspecs/features/qpa/genericunixfontdatabase.prf
+++ b/mkspecs/features/qpa/genericunixfontdatabase.prf
@@ -2,7 +2,7 @@ CONFIG += qpa/basicunixfontdatabase
contains(QT_CONFIG, fontconfig) {
DEFINES += Q_FONTCONFIGDATABASE
LIBS += -lfontconfig
-} else {
+} else:!android {
fonts.path = $$[QT_INSTALL_LIBS]/fonts
fonts.files = $$QT_SOURCE_TREE/lib/fonts/*
INSTALLS += fonts
diff --git a/mkspecs/features/qt_android_deps.prf b/mkspecs/features/qt_android_deps.prf
new file mode 100644
index 0000000000..27814a90a5
--- /dev/null
+++ b/mkspecs/features/qt_android_deps.prf
@@ -0,0 +1,53 @@
+
+# W A R N I N G
+# -------------
+#
+# This file is not part of the Qt API. It exists purely as an
+# implementation detail. It may change from version to version
+# without notice, or even be removed.
+#
+# We mean it.
+#
+
+# Generates an xml file to match the library in lib/ listing the dependencies
+# of the module on JNI-based libraries etc. Used for deployment of an Android
+# app.
+
+ANDROID_DEPENDS_DIR = $$MODULE_QMAKE_OUTDIR/lib/
+DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml
+
+!build_pass {
+ !isEmpty(ANDROID_JAR_DEPENDENCIES) {
+ for(JAR_FILE, ANDROID_JAR_DEPENDENCIES) {
+ INIT_CLASS = $$section(JAR_FILE, ":", 1, 1)
+ !isEmpty(INIT_CLASS): INIT_CLASS = "initClass=\"$$INIT_CLASS\""
+ JAR_FILE = $$section(JAR_FILE, ":", 0, 0)
+ FILE_CONTENT += "<jar file=\"$$JAR_FILE\" $$INIT_CLASS />"
+ }
+ }
+
+ !isEmpty(ANDROID_LIB_DEPENDENCIES) {
+ for(LIB_FILE, ANDROID_LIB_DEPENDENCIES) {
+ FILE_CONTENT += "<lib file=\"$$LIB_FILE\" />"
+ }
+ }
+
+ !isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS) {
+ for(REPLACEMENT, ANDROID_LIB_DEPENDENCY_REPLACEMENTS) {
+ REPLACEMENT_FILE = $$section(REPLACEMENT, ":", 0, 0)
+ LIB_FILE = $$section(REPLACEMENT, ":", 1, 1)
+ FILE_CONTENT += "<lib file=\"$$LIB_FILE\" replaces=\"$$REPLACEMENT_FILE\" />"
+ }
+ }
+
+ !isEmpty(FILE_CONTENT) {
+ FILE_CONTENT = "<rules><dependencies><lib name=\"$$TARGET\"><depends>" $$FILE_CONTENT "</depends></lib></dependencies></rules>"
+ write_file($$DEPENDENCY_FILE, FILE_CONTENT) | error("Aborting.")
+ }
+}
+
+!isEmpty(ANDROID_JAR_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS) {
+ install_dependencies_file.files = $$DEPENDENCY_FILE
+ install_dependencies_file.path = $$[QT_INSTALL_LIBS]
+ INSTALLS += install_dependencies_file
+}
diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf
index 4f5b62e1e5..c53bc960a2 100644
--- a/mkspecs/features/qt_build_config.prf
+++ b/mkspecs/features/qt_build_config.prf
@@ -39,6 +39,9 @@ mac {
}
}
+cross_compile: \
+ CONFIG += force_bootstrap
+
CONFIG += \
create_prl link_prl \
prepare_docs qt_docs_targets \
diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
new file mode 100644
index 0000000000..10b7736749
--- /dev/null
+++ b/mkspecs/features/qt_common.prf
@@ -0,0 +1,54 @@
+#
+# W A R N I N G
+# -------------
+#
+# This file is not part of the Qt API. It exists purely as an
+# implementation detail. It may change from version to version
+# without notice, or even be removed.
+#
+# We mean it.
+#
+
+contains(QT_CONFIG, c++11): CONFIG += c++11
+contains(TEMPLATE, .*lib) {
+ # module and plugins
+ contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols
+ unix:contains(QT_CONFIG, reduce_relocations): CONFIG += bsymbolic_functions
+ contains(QT_CONFIG, largefile): CONFIG += largefile
+ contains(QT_CONFIG, separate_debug_info): CONFIG += separate_debug_info
+ contains(QT_CONFIG, separate_debug_info_nocopy): CONFIG += separate_debug_info_nocopy
+}
+
+warnings_are_errors:warning_clean {
+ # If the module declares that it has does its clean-up of warnings, enable -Werror.
+ # This setting is compiler-dependent anyway because it depends on the version of the
+ # compiler.
+ clang {
+ # Apple clang 4.0+ or clang 3.1+
+ greaterThan(QT_CLANG_MAJOR_VERSION, 3) | \
+ if(equals(QT_CLANG_MAJOR_VERSION, 3):greaterThan(QT_CLANG_MINOR_VERSION, 1)) | \
+ greaterThan(QT_APPLE_CLANG_MAJOR_VERSION, 3) {
+ QMAKE_CXXFLAGS += -Werror -Wno-error=\\$${LITERAL_HASH}warnings $$WERROR
+ }
+ } else:intel_icc {
+ # Intel CC 13.0+ (a.k.a. Intel Composer XE 2013)
+ greaterThan(QT_ICC_MAJOR_VERSION, 12) {
+ # 177: function "entity" was declared but never referenced
+ # (too aggressive; ICC reports even for functions created due to template instantiation)
+ # 1224: #warning directive
+ # 1881: argument must be a constant null pointer value
+ # (NULL in C++ is usually a literal 0)
+ QMAKE_CXXFLAGS += -Werror -ww177,1224,1881 $$WERROR
+ }
+ } else:gcc {
+ # GCC 4.6+
+ # note: there was no GCC 3.6 and this assumes no one is crazy enough to compile Qt with GCC 2.7
+ greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 5) {
+ QMAKE_CXXFLAGS += -Werror -Wno-error=cpp $$WERROR
+
+ # GCC prints this bogus warning, after it has inlined a lot of code
+ # error: assuming signed overflow does not occur when assuming that (X + c) < X is always false
+ QMAKE_CXXFLAGS += -Wno-error=strict-overflow
+ }
+ }
+}
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
index d015b213d7..ba109864f6 100644
--- a/mkspecs/features/qt_module.prf
+++ b/mkspecs/features/qt_module.prf
@@ -27,6 +27,17 @@ isEmpty(VERSION): error("Module does not define version.")
# unless overridden. Host builds are always static
host_build|staticlib: CONFIG += static
+host_build {
+ QT -= gui # no host module will ever use gui
+ force_bootstrap {
+ !build_pass: CONFIG += release
+ contains(QT, core(-private)?|xml) {
+ QT -= core core-private xml
+ QT += bootstrap-private
+ }
+ }
+}
+
ucmodule = $$upper($$MODULE)
isEmpty(MODULE_INCNAME): MODULE_INCNAME = $$TARGET
@@ -74,13 +85,6 @@ contains(TARGET, QtAddOn.*): \
else: \
DEFINES += QT_BUILD_$${ucmodule}_LIB
-contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
-unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
-contains(QT_CONFIG, largefile):CONFIG += largefile
-contains(QT_CONFIG, separate_debug_info):CONFIG += separate_debug_info
-contains(QT_CONFIG, separate_debug_info_nocopy):CONFIG += separate_debug_info_nocopy
-contains(QT_CONFIG, c++11):CONFIG += c++11
-
#mac frameworks
mac:CONFIG(shared, static|shared):contains(QT_CONFIG, qt_framework) {
#QMAKE_FRAMEWORK_VERSION = 4.0
@@ -115,6 +119,8 @@ aix-g++* {
QMAKE_CXXFLAGS += -mminimal-toc
}
+android: CONFIG += qt_android_deps
+
#install directives
load(qt_installs)
@@ -169,6 +175,7 @@ win32 {
TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end
load(qt_targets)
+load(qt_common)
win32:DEFINES+=_USE_MATH_DEFINES
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf
index 10d3fe3c0b..1ddc28bed0 100644
--- a/mkspecs/features/qt_module_headers.prf
+++ b/mkspecs/features/qt_module_headers.prf
@@ -13,13 +13,22 @@ load(qt_build_paths)
!build_pass {
qtPrepareTool(QMAKE_SYNCQT, syncqt)
- contains(QT_CONFIG, private_tests): \ # -developer-build
- QMAKE_SYNCQT += -check-includes
- QMAKE_SYNCQT += -module $$MODULE_INCNAME -mkspecsdir $$[QT_HOST_DATA/get]/mkspecs -outdir $$MODULE_BASE_OUTDIR $$MODULE_BASE_DIR
+ minimal_syncqt {
+ QMAKE_SYNCQT += -minimal $$QMAKE_SYNCQT_OPTIONS
+ } else {
+ contains(QT_CONFIG, private_tests): \ # -developer-build
+ QMAKE_SYNCQT += -check-includes
+ QMAKE_SYNCQT += -module $$MODULE_INCNAME
+ }
+ QMAKE_SYNCQT += \
+ -mkspecsdir $$[QT_HOST_DATA/get]/mkspecs \
+ -outdir $$MODULE_BASE_OUTDIR $$MODULE_BASE_DIR
!silent: message($$QMAKE_SYNCQT)
system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT")
}
+minimal_syncqt: return()
+
#load up the headers info
include($$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/headers.pri, "", true)
diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf
index b74e5dd73f..2822e70b05 100644
--- a/mkspecs/features/qt_module_pris.prf
+++ b/mkspecs/features/qt_module_pris.prf
@@ -43,7 +43,7 @@ else: \
module_config = "QT.$${MODULE}.CONFIG = $$MODULE_CONFIG"
else: \
module_config =
- !no_module_headers {
+ !no_module_headers:!minimal_syncqt {
MODULE_INCLUDES = "\$\$QT_MODULE_INCLUDE_BASE \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME"
MODULE_PRIVATE_INCLUDES = "\$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \
\$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME"
diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf
index 54a995daae..98710431c3 100644
--- a/mkspecs/features/qt_plugin.prf
+++ b/mkspecs/features/qt_plugin.prf
@@ -23,10 +23,6 @@ tool_plugin {
contains(QT_CONFIG, debug_and_release):CONFIG += debug_and_release
contains(QT_CONFIG, build_all):CONFIG += build_all
}
-contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
-contains(QT_CONFIG, separate_debug_info):CONFIG += separate_debug_info
-contains(QT_CONFIG, separate_debug_info_nocopy):CONFIG += separate_debug_info_nocopy
-contains(QT_CONFIG, c++11):CONFIG += c++11
CONFIG(static, static|shared) {
isEmpty(MODULE): MODULE = $$basename(TARGET)
@@ -52,6 +48,7 @@ INSTALLS += target
TARGET = $$qtLibraryTarget($$TARGET)
load(qt_targets)
+load(qt_common)
wince*:LIBS += $$QMAKE_LIBS_GUI
QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
diff --git a/mkspecs/features/qt_tool.prf b/mkspecs/features/qt_tool.prf
index b449e4074d..56ba1169a1 100644
--- a/mkspecs/features/qt_tool.prf
+++ b/mkspecs/features/qt_tool.prf
@@ -17,9 +17,13 @@ DESTDIR = $$MODULE_BASE_OUTDIR/bin
CONFIG += console
isEmpty(QMAKE_INFO_PLIST): CONFIG -= app_bundle
-host_build {
+host_build: QT -= gui # no host tool will ever use gui
+host_build:force_bootstrap {
!build_pass: CONFIG += release
- QT = bootstrap-private
+ contains(QT, core(-private)?|xml) {
+ QT -= core core-private xml
+ QT += bootstrap-private
+ }
target.path = $$[QT_HOST_BINS]
} else {
!build_pass:contains(QT_CONFIG, build_all): CONFIG += release
@@ -28,10 +32,12 @@ host_build {
INSTALLS += target
load(qt_targets)
+load(qt_common)
# If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to work with the non-installed build.
-!build_pass:prefix_build {
+# Non-bootstrapped tools always need this because of the environment setup.
+!build_pass:if(!host_build|!force_bootstrap|prefix_build) {
isEmpty(MODULE):MODULE = $$TARGET
@@ -41,7 +47,7 @@ load(qt_targets)
load(resolve_target)
cmd = $$shell_path($$QMAKE_RESOLVED_TARGET)
- !host_build: qtAddTargetEnv(cmd)
+ !host_build|!force_bootstrap: qtAddTargetEnv(cmd)
TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_tool_$${MODULE}.pri
diff --git a/mkspecs/features/resolve_target.prf b/mkspecs/features/resolve_target.prf
index 8cd12b2a00..22d7722ce3 100644
--- a/mkspecs/features/resolve_target.prf
+++ b/mkspecs/features/resolve_target.prf
@@ -28,7 +28,7 @@ win32 {
} else {
contains(TEMPLATE, .*lib):LIBPREFIX = lib
- macx {
+ mac {
equals(TEMPLATE, lib) {
lib_bundle {
QMAKE_RESOLVED_TARGET = $${QMAKE_RESOLVED_TARGET}$${TARGET}.framework/$${TARGET}
diff --git a/mkspecs/features/testcase.prf b/mkspecs/features/testcase.prf
index faf4eeb124..15febe2dd5 100644
--- a/mkspecs/features/testcase.prf
+++ b/mkspecs/features/testcase.prf
@@ -32,7 +32,7 @@ contains(MUNGED_TARGET,.*/.*):check.commands = cd $(DESTDIR) &&
# Allow for a custom test runner script
check.commands += $(TESTRUNNER)
-macx {
+mac {
app_bundle: check.commands += ./$(QMAKE_TARGET).app/Contents/MacOS/$(QMAKE_TARGET)
else: check.commands += ./$(QMAKE_TARGET)
}
diff --git a/mkspecs/features/unix/opengl.prf b/mkspecs/features/unix/opengl.prf
index 74a514915d..8dd47d089d 100644
--- a/mkspecs/features/unix/opengl.prf
+++ b/mkspecs/features/unix/opengl.prf
@@ -11,7 +11,7 @@ contains(QT_CONFIG, opengles1) {
} else {
INCLUDEPATH += $$QMAKE_INCDIR_OPENGL
!isEmpty(QMAKE_LIBDIR_OPENGL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL
- target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_QT
+ target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL
else:LIBS += $$QMAKE_LIBS_OPENGL
}
diff --git a/mkspecs/features/unix/separate_debug_info.prf b/mkspecs/features/unix/separate_debug_info.prf
index cea1731888..c5ff6dcba3 100644
--- a/mkspecs/features/unix/separate_debug_info.prf
+++ b/mkspecs/features/unix/separate_debug_info.prf
@@ -1,8 +1,15 @@
!separate_debug_info_nocopy:have_target:!static:!isEmpty(QMAKE_OBJCOPY) {
- qnx:debug_info_suffix=sym
- else:debug_info_suffix=debug
- QMAKE_SEPARATE_DEBUG_INFO = test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\" ; targ=`basename $(TARGET)`; $$QMAKE_OBJCOPY --only-keep-debug \"\$\$targ\" \"\$\$targ.$$debug_info_suffix\" && $$QMAKE_OBJCOPY --strip-debug \"\$\$targ\" && $$QMAKE_OBJCOPY --add-gnu-debuglink=\"\$\$targ.$$debug_info_suffix\" \"\$\$targ\" && chmod -x \"\$\$targ.$$debug_info_suffix\"
+ qnx {
+ debug_info_suffix = sym
+ debug_info_keep = --keep-file-symbols
+ debug_info_strip = --strip-debug -R.ident
+ } else {
+ debug_info_suffix = debug
+ debug_info_keep = --only-keep-debug
+ debug_info_strip = --strip-debug
+ }
+ QMAKE_SEPARATE_DEBUG_INFO = test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\" ; targ=`basename $(TARGET)`; $$QMAKE_OBJCOPY $$debug_info_keep \"\$\$targ\" \"\$\$targ.$$debug_info_suffix\" && $$QMAKE_OBJCOPY $$debug_info_strip \"\$\$targ\" && $$QMAKE_OBJCOPY --add-gnu-debuglink=\"\$\$targ.$$debug_info_suffix\" \"\$\$targ\" && chmod -x \"\$\$targ.$$debug_info_suffix\"
QMAKE_INSTALL_SEPARATE_DEBUG_INFO = test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\" ; $(INSTALL_FILE) `basename $(TARGET)`.$$debug_info_suffix $(INSTALL_ROOT)/\$\$target_path/
!isEmpty(QMAKE_POST_LINK):QMAKE_POST_LINK = $$escape_expand(\\n\\t)$$QMAKE_POST_LINK
diff --git a/mkspecs/features/win32/opengl.prf b/mkspecs/features/win32/opengl.prf
index 898dee77f9..0f33f31e59 100644
--- a/mkspecs/features/win32/opengl.prf
+++ b/mkspecs/features/win32/opengl.prf
@@ -21,6 +21,7 @@ wince* {
QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2_RELEASE
}
DEFINES += QT_OPENGL_ES_2 QT_OPENGL_ES_2_ANGLE
+ contains(QT_CONFIG, static): DEFINES += QT_OPENGL_ES_2_ANGLE_STATIC
QT_CONFIG -= opengl
} else {
QMAKE_LIBS += $$QMAKE_LIBS_OPENGL
diff --git a/mkspecs/freebsd-g++/qmake.conf b/mkspecs/freebsd-g++/qmake.conf
index 9e95a3e2c6..1e1fa0ca5a 100644
--- a/mkspecs/freebsd-g++/qmake.conf
+++ b/mkspecs/freebsd-g++/qmake.conf
@@ -24,7 +24,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_AR = ar cqs
diff --git a/mkspecs/freebsd-g++46/qmake.conf b/mkspecs/freebsd-g++46/qmake.conf
index bddc196811..9bb5a795b0 100644
--- a/mkspecs/freebsd-g++46/qmake.conf
+++ b/mkspecs/freebsd-g++46/qmake.conf
@@ -24,7 +24,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_AR = ar cqs
diff --git a/mkspecs/freebsd-icc/qmake.conf b/mkspecs/freebsd-icc/qmake.conf
index 046b20c896..3514d15838 100644
--- a/mkspecs/freebsd-icc/qmake.conf
+++ b/mkspecs/freebsd-icc/qmake.conf
@@ -83,7 +83,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_AR = ar cqs
diff --git a/mkspecs/hpux-acc-64/qmake.conf b/mkspecs/hpux-acc-64/qmake.conf
index b285c2cdb6..6d1abe0949 100644
--- a/mkspecs/hpux-acc-64/qmake.conf
+++ b/mkspecs/hpux-acc-64/qmake.conf
@@ -103,7 +103,6 @@ QMAKE_LIBS = -lm
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11
QMAKE_LIBS_OPENGL = -lGL -lXt
-QMAKE_LIBS_OPENGL_QT = -lGL -lXt
QMAKE_LIBS_THREAD = -lpthread
QMAKE_LIBS_YACC = -ly
diff --git a/mkspecs/hpux-acc-o64/qmake.conf b/mkspecs/hpux-acc-o64/qmake.conf
index 985378d9fb..f6ceb93c23 100644
--- a/mkspecs/hpux-acc-o64/qmake.conf
+++ b/mkspecs/hpux-acc-o64/qmake.conf
@@ -4,110 +4,109 @@
# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
# we also need to redefine _HPUX_SOURCE.
# From pthread(3t):
-# Some documentation will recommend the use of -D_REENTRANT for
-# compilation. While this also functions properly, it is considered
-# an obsolescent form.
+# Some documentation will recommend the use of -D_REENTRANT for
+# compilation. While this also functions properly, it is considered
+# an obsolescent form.
# See pthread(3t) for more details.
#
# From the "HP aC++ Online Programmer's Guide":
-# When +DA2.0W is specified:
-# * 64-bit SVR4 Executable and Linking Format (ELF) object files
-# are generated for PA-RISC 2.0.
-# * The preprocessor predefined macro, __LP64__ is defined.
-# * The correct path for 64-bit system and language libraries is
-# selected.
-# When +DD32 is specified:
-# * The size of an int, long, or pointer data type is 32-bits.
-# The size of an int data type is 32-bits. The size of a long or
-# pointer data type is 64-bits.
-# * This is the default, currently equivalent to +DA1.1 architecture.
-# When +DD64 is specified:
-# * The size of an int data type is 32-bits. The size of a long or
-# pointer data type is 64-bits.
-# * This is currently equivalent to +DA2.OW architecture.
-# * The preprocessor predefined macro, __LP64__ is defined.
-# Using +DS to Specify Instruction Scheduling:
-# * By default, the compiler performs scheduling tuned for the system
-# on which you are compiling, or, if specified, tuned for the setting
-# of the +DA option.
+# When +DA2.0W is specified:
+# * 64-bit SVR4 Executable and Linking Format (ELF) object files
+# are generated for PA-RISC 2.0.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# * The correct path for 64-bit system and language libraries is
+# selected.
+# When +DD32 is specified:
+# * The size of an int, long, or pointer data type is 32-bits.
+# The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is the default, currently equivalent to +DA1.1 architecture.
+# When +DD64 is specified:
+# * The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is currently equivalent to +DA2.OW architecture.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# Using +DS to Specify Instruction Scheduling:
+# * By default, the compiler performs scheduling tuned for the system
+# on which you are compiling, or, if specified, tuned for the setting
+# of the +DA option.
#
# From the online "C/HP-UX Reference Manual":
-# -Aa
-# Enables strict ANSI C compliance.
-# -Ae
-# Enables ANSI C compliance, HP value-added features (as described
-# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
-# to -Aa +e -D_HPUX_SOURCE.
-# +e
-# Enables the following HP value added features while compiling in
-# ANSI C mode: sized enum, long long, long pointers, compiler supplied
-# defaults for missing arguments to intrinsic calls, and $ in identifier
-# HP C extensions.
+# -Aa
+# Enables strict ANSI C compliance.
+# -Ae
+# Enables ANSI C compliance, HP value-added features (as described
+# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
+# to -Aa +e -D_HPUX_SOURCE.
+# +e
+# Enables the following HP value added features while compiling in
+# ANSI C mode: sized enum, long long, long pointers, compiler supplied
+# defaults for missing arguments to intrinsic calls, and $ in identifier
+# HP C extensions.
#
-MAKEFILE_GENERATOR = UNIX
-QMAKE_PLATFORM = hpux
+MAKEFILE_GENERATOR = UNIX
+QMAKE_PLATFORM = hpux
-QMAKE_COMPILER = hp_acc
+QMAKE_COMPILER = hp_acc
-QMAKE_CC = cc
-QMAKE_LEX = flex
-QMAKE_LEXFLAGS =
-QMAKE_YACC = yacc
-QMAKE_YACCFLAGS = -d
-QMAKE_CFLAGS = -Ae +DA2.0 -w
-QMAKE_CFLAGS_WARN_ON =
-QMAKE_CFLAGS_WARN_OFF =
-QMAKE_CFLAGS_RELEASE = -O +Oentrysched +Onolimit
-QMAKE_CFLAGS_DEBUG = -y -g
-QMAKE_CFLAGS_SHLIB = +Z
+QMAKE_CC = cc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -Ae +DA2.0 -w
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF =
+QMAKE_CFLAGS_RELEASE = -O +Oentrysched +Onolimit
+QMAKE_CFLAGS_DEBUG = -y -g
+QMAKE_CFLAGS_SHLIB = +Z
QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
-QMAKE_CFLAGS_YACC =
-QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
-QMAKE_CXX = aCC
-QMAKE_CXXFLAGS = +DA2.0 -w -D__STRICT_ANSI__ -D_HPUX_SOURCE
-QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG = -g
-QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXX = aCC
+QMAKE_CXXFLAGS = +DA2.0 -w -D__STRICT_ANSI__ -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = -g
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
QMAKE_CXXFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_STATIC_LIB
-QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
-QMAKE_INCDIR =
-QMAKE_LIBDIR =
-QMAKE_INCDIR_X11 = /usr/include/X11R6
-QMAKE_LIBDIR_X11 = /usr/lib/X11R6
-QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
-QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib /usr/contrib/X11R6/lib
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/X11R6
+QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib /usr/contrib/X11R6/lib
-QMAKE_LINK = aCC
-QMAKE_LINK_SHLIB = aCC
-QMAKE_LFLAGS = +DA2.0 -Wl,+s
-QMAKE_LFLAGS_RELEASE = -O
-QMAKE_LFLAGS_DEBUG =
-QMAKE_LFLAGS_SHLIB = -b
-QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME = -Wl,+h,
-QMAKE_LFLAGS_NOUNDEF = -Wl,+noallowunsats
-QMAKE_LFLAGS_RPATH = -Wl,+b,
-QMAKE_HPUX_SHLIB = 2
-QMAKE_EXTENSION_SHLIB = sl
+QMAKE_LINK = aCC
+QMAKE_LINK_SHLIB = aCC
+QMAKE_LFLAGS = +DA2.0 -Wl,+s
+QMAKE_LFLAGS_RELEASE = -O
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -b
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_NOUNDEF = -Wl,+noallowunsats
+QMAKE_LFLAGS_RPATH = -Wl,+b,
+QMAKE_HPUX_SHLIB = 2
+QMAKE_EXTENSION_SHLIB = sl
-QMAKE_LIBS = -lm
-QMAKE_LIBS_DYNLOAD = -ldld
-QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldld
+QMAKE_LIBS_X11 = -lXext -lX11
-QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
-QMAKE_LIBS_THREAD = -lpthread
-QMAKE_LIBS_YACC = -ly
+QMAKE_LIBS_OPENGL = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
-QMAKE_AR = ar cqs
+QMAKE_AR = ar cqs
QMAKE_OBJCOPY = objcopy
-QMAKE_RANLIB =
+QMAKE_RANLIB =
include(../common/unix.conf)
load(qt_config)
diff --git a/mkspecs/hpux-acc/qmake.conf b/mkspecs/hpux-acc/qmake.conf
index c7cdab49e6..ef16219ec9 100644
--- a/mkspecs/hpux-acc/qmake.conf
+++ b/mkspecs/hpux-acc/qmake.conf
@@ -82,7 +82,6 @@ QMAKE_LIBS = -lm
QMAKE_LIBS_DYNLOAD = -ldld
QMAKE_LIBS_X11 = -lXext -lX11
QMAKE_LIBS_OPENGL = -lGL -lXt
-QMAKE_LIBS_OPENGL_QT = -lGL -lXt
QMAKE_LIBS_THREAD = -lpthread
QMAKE_LIBS_YACC = -ly
diff --git a/mkspecs/hpux-g++-64/qmake.conf b/mkspecs/hpux-g++-64/qmake.conf
index 49eb1a3c67..8d598d7388 100644
--- a/mkspecs/hpux-g++-64/qmake.conf
+++ b/mkspecs/hpux-g++-64/qmake.conf
@@ -5,73 +5,72 @@
# therefore we also need to redefine _HPUX_SOURCE.
#
-MAKEFILE_GENERATOR = UNIX
-QMAKE_PLATFORM = hpux
+MAKEFILE_GENERATOR = UNIX
+QMAKE_PLATFORM = hpux
-QMAKE_COMPILER = gcc
+QMAKE_COMPILER = gcc
-QMAKE_CC = gcc
-QMAKE_LEX = flex
-QMAKE_LEXFLAGS =
-QMAKE_YACC = yacc
-QMAKE_YACCFLAGS = -d
-QMAKE_CFLAGS =
-QMAKE_CFLAGS_DEPS = -M
-QMAKE_CFLAGS_WARN_ON = -Wall -W
-QMAKE_CFLAGS_WARN_OFF = -w
-QMAKE_CFLAGS_RELEASE = -O2
-QMAKE_CFLAGS_DEBUG = -g
-QMAKE_CFLAGS_SHLIB = -fPIC
-QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
-QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
+QMAKE_CC = gcc
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS =
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = -O2
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fPIC
+QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE
-QMAKE_CXX = g++
-QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D_HPUX_SOURCE
-QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
-QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXX = g++
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
QMAKE_CXXFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_STATIC_LIB
-QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L
-QMAKE_INCDIR =
-QMAKE_LIBDIR = /usr/lib/pa20_64
-QMAKE_INCDIR_X11 = /usr/include/X11R6
-QMAKE_LIBDIR_X11 = /usr/lib/X11R6/pa20_64
-QMAKE_INCDIR_OPENGL = /opt/Mesa/include /usr/contrib/X11R6/include
-QMAKE_LIBDIR_OPENGL = /opt/Mesa/lib/pa20_64 /usr/contrib/X11R6/lib/pa20_64
+QMAKE_INCDIR =
+QMAKE_LIBDIR = /usr/lib/pa20_64
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/X11R6/pa20_64
+QMAKE_INCDIR_OPENGL = /opt/Mesa/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/Mesa/lib/pa20_64 /usr/contrib/X11R6/lib/pa20_64
-QMAKE_LINK = g++
-QMAKE_LINK_SHLIB = g++
-QMAKE_LINK_C = gcc
-QMAKE_LINK_C_SHLIB = gcc
-QMAKE_LFLAGS = -Wl,+s -lpthread
-QMAKE_LFLAGS_RELEASE =
-QMAKE_LFLAGS_DEBUG =
-QMAKE_LFLAGS_SHLIB = -fPIC -shared
-QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME = -Wl,+h,
-QMAKE_LFLAGS_THREAD =
-QMAKE_LFLAGS_NOUNDEF = -Wl,+noallowunsats
-QMAKE_LFLAGS_RPATH = -Wl,+b,
-QMAKE_HPUX_SHLIB = 3
-QMAKE_EXTENSION_SHLIB = sl
+QMAKE_LINK = g++
+QMAKE_LINK_SHLIB = g++
+QMAKE_LINK_C = gcc
+QMAKE_LINK_C_SHLIB = gcc
+QMAKE_LFLAGS = -Wl,+s -lpthread
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -fPIC -shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_THREAD =
+QMAKE_LFLAGS_NOUNDEF = -Wl,+noallowunsats
+QMAKE_LFLAGS_RPATH = -Wl,+b,
+QMAKE_HPUX_SHLIB = 3
+QMAKE_EXTENSION_SHLIB = sl
-QMAKE_LIBS = -lm
-QMAKE_LIBS_DYNLOAD = -ldld
-QMAKE_LIBS_X11 = -lXext -lX11
-QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
-QMAKE_LIBS_THREAD = -lpthread
-QMAKE_LIBS_YACC = -ly
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldld
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_OPENGL = -lGL
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
-QMAKE_AR = ar cqs
+QMAKE_AR = ar cqs
QMAKE_OBJCOPY = objcopy
-QMAKE_RANLIB =
+QMAKE_RANLIB =
include(../common/unix.conf)
load(qt_config)
diff --git a/mkspecs/hpux-g++/qmake.conf b/mkspecs/hpux-g++/qmake.conf
index eca1b32b38..4c232ee30b 100644
--- a/mkspecs/hpux-g++/qmake.conf
+++ b/mkspecs/hpux-g++/qmake.conf
@@ -66,7 +66,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldld
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_LIBS_YACC = -ly
diff --git a/mkspecs/hpuxi-acc-32/qmake.conf b/mkspecs/hpuxi-acc-32/qmake.conf
index bd2a58634f..14487f28de 100644
--- a/mkspecs/hpuxi-acc-32/qmake.conf
+++ b/mkspecs/hpuxi-acc-32/qmake.conf
@@ -58,7 +58,6 @@ QMAKE_LIBS = -lm
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11
QMAKE_LIBS_OPENGL = -lGL -lXt
-QMAKE_LIBS_OPENGL_QT = -lGL -lXt
QMAKE_LIBS_THREAD = -lpthread
QMAKE_LIBS_YACC = -ly
diff --git a/mkspecs/hpuxi-acc-64/qmake.conf b/mkspecs/hpuxi-acc-64/qmake.conf
index d7c7f7b23f..e320a83eec 100644
--- a/mkspecs/hpuxi-acc-64/qmake.conf
+++ b/mkspecs/hpuxi-acc-64/qmake.conf
@@ -4,110 +4,109 @@
# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
# we also need to redefine _HPUX_SOURCE.
# From pthread(3t):
-# Some documentation will recommend the use of -D_REENTRANT for
-# compilation. While this also functions properly, it is considered
-# an obsolescent form.
+# Some documentation will recommend the use of -D_REENTRANT for
+# compilation. While this also functions properly, it is considered
+# an obsolescent form.
# See pthread(3t) for more details.
#
# From the "HP aC++ Online Programmer's Guide":
-# When +DA2.0W is specified:
-# * 64-bit SVR4 Executable and Linking Format (ELF) object files
-# are generated for PA-RISC 2.0.
-# * The preprocessor predefined macro, __LP64__ is defined.
-# * The correct path for 64-bit system and language libraries is
-# selected.
-# When +DD32 is specified:
-# * The size of an int, long, or pointer data type is 32-bits.
-# The size of an int data type is 32-bits. The size of a long or
-# pointer data type is 64-bits.
-# * This is the default, currently equivalent to +DA1.1 architecture.
-# When +DD64 is specified:
-# * The size of an int data type is 32-bits. The size of a long or
-# pointer data type is 64-bits.
-# * This is currently equivalent to +DA2.OW architecture.
-# * The preprocessor predefined macro, __LP64__ is defined.
-# Using +DS to Specify Instruction Scheduling:
-# * By default, the compiler performs scheduling tuned for the system
-# on which you are compiling, or, if specified, tuned for the setting
-# of the +DA option.
+# When +DA2.0W is specified:
+# * 64-bit SVR4 Executable and Linking Format (ELF) object files
+# are generated for PA-RISC 2.0.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# * The correct path for 64-bit system and language libraries is
+# selected.
+# When +DD32 is specified:
+# * The size of an int, long, or pointer data type is 32-bits.
+# The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is the default, currently equivalent to +DA1.1 architecture.
+# When +DD64 is specified:
+# * The size of an int data type is 32-bits. The size of a long or
+# pointer data type is 64-bits.
+# * This is currently equivalent to +DA2.OW architecture.
+# * The preprocessor predefined macro, __LP64__ is defined.
+# Using +DS to Specify Instruction Scheduling:
+# * By default, the compiler performs scheduling tuned for the system
+# on which you are compiling, or, if specified, tuned for the setting
+# of the +DA option.
#
# From the online "C/HP-UX Reference Manual":
-# -Aa
-# Enables strict ANSI C compliance.
-# -Ae
-# Enables ANSI C compliance, HP value-added features (as described
-# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
-# to -Aa +e -D_HPUX_SOURCE.
-# +e
-# Enables the following HP value added features while compiling in
-# ANSI C mode: sized enum, long long, long pointers, compiler supplied
-# defaults for missing arguments to intrinsic calls, and $ in identifier
-# HP C extensions.
+# -Aa
+# Enables strict ANSI C compliance.
+# -Ae
+# Enables ANSI C compliance, HP value-added features (as described
+# for +e option), and _HPUX_SOURCE name space macro. It is equivalent
+# to -Aa +e -D_HPUX_SOURCE.
+# +e
+# Enables the following HP value added features while compiling in
+# ANSI C mode: sized enum, long long, long pointers, compiler supplied
+# defaults for missing arguments to intrinsic calls, and $ in identifier
+# HP C extensions.
#
-MAKEFILE_GENERATOR = UNIX
-QMAKE_PLATFORM = hpux
+MAKEFILE_GENERATOR = UNIX
+QMAKE_PLATFORM = hpux
CONFIG += plugin_no_soname
-QMAKE_COMPILER = hp_acc
+QMAKE_COMPILER = hp_acc
-QMAKE_CC = cc
-QMAKE_LEX = lex
-QMAKE_LEXFLAGS =
-QMAKE_YACC = yacc
-QMAKE_YACCFLAGS = -d
-QMAKE_CFLAGS = +DD64 +DSitanium -w
-QMAKE_CFLAGS_WARN_ON =
-QMAKE_CFLAGS_WARN_OFF = -w
-QMAKE_CFLAGS_RELEASE = +O1
-QMAKE_CFLAGS_DEBUG = -g
-QMAKE_CFLAGS_SHLIB = +Z
-QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
-QMAKE_CFLAGS_YACC =
-QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE -D_REENTRANT -mt
+QMAKE_CC = cc
+QMAKE_LEX = lex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = yacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = +DD64 +DSitanium -w
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE = +O1
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLI = +Z
+QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE -D_REENTRANT -mt
-QMAKE_CXX = aCC
-QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D__STRICT_ANSI__ -D_HPUX_SOURCE
-QMAKE_CXXFLAGS_DEPS = +M
-QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
-QMAKE_CXXFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_STATIC_LIB
-QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_REENTRANT -mt
+QMAKE_CXX = aCC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -D__STRICT_ANSI__ -D_HPUX_SOURCE
+QMAKE_CXXFLAGS_DEPS = +M
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_STATIC_LB = $$QMAKE_CFLAGS_STATIC_LIB
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = -D_POSIX_C_SOURCE=199506L -D_REENTRANT -mt
-QMAKE_INCDIR =
-QMAKE_LIBDIR =
-QMAKE_INCDIR_X11 = /usr/include/X11R6
-QMAKE_LIBDIR_X11 = /usr/lib/hpux64/X11R6
-QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
-QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib/hpux64 /usr/contrib/X11R6/lib/hpux64
+QMAKE_INCDIR =
+QMAKE_LIBDIR =
+QMAKE_INCDIR_X11 = /usr/include/X11R6
+QMAKE_LIBDIR_X11 = /usr/lib/hpux64/X11R6
+QMAKE_INCDIR_OPENGL = /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
+QMAKE_LIBDIR_OPENGL = /opt/graphics/OpenGL/lib/hpux64 /usr/contrib/X11R6/lib/hpux64
-QMAKE_LINK = aCC
-QMAKE_LINK_SHLIB = aCC
-QMAKE_LFLAGS = +DD64 +DSitanium -Wl,+s
-QMAKE_LFLAGS_RELEASE = -O
-QMAKE_LFLAGS_DEBUG = -g
-QMAKE_LFLAGS_SHLIB = -b -Wl,-a,shared
-QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME = -Wl,+h,
-QMAKE_LFLAGS_THREAD =
-QMAKE_LFLAGS_NOUNDEF = -Wl,+noallowunsats
-QMAKE_LFLAGS_RPATH =
+QMAKE_LINK = aCC
+QMAKE_LINK_SHLIB = aCC
+QMAKE_LFLAGS = +DD64 +DSitanium -Wl,+s
+QMAKE_LFLAGS_RELEASE = -O
+QMAKE_LFLAGS_DEBUG = -g
+QMAKE_LFLAGS_SHLIB = -b -Wl,-a,shared
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -Wl,+h,
+QMAKE_LFLAGS_THREAD =
+QMAKE_LFLAGS_NOUNDEF = -Wl,+noallowunsats
+QMAKE_LFLAGS_RPATH =
-QMAKE_LIBS = -lm
-QMAKE_LIBS_DYNLOAD = -ldl
-QMAKE_LIBS_X11 = -lXext -lX11
-QMAKE_LIBS_OPENGL = -lGL -lXt
-QMAKE_LIBS_OPENGL_QT = -lGL -lXt
-QMAKE_LIBS_THREAD = -lpthread
-QMAKE_LIBS_YACC = -ly
+QMAKE_LIBS = -lm
+QMAKE_LIBS_DYNLOAD = -ldl
+QMAKE_LIBS_X11 = -lXext -lX11
+QMAKE_LIBS_OPENGL = -lGL -lXt
+QMAKE_LIBS_THREAD = -lpthread
+QMAKE_LIBS_YACC = -ly
-QMAKE_AR = ar cqs
+QMAKE_AR = ar cqs
QMAKE_OBJCOPY = objcopy
-QMAKE_RANLIB =
+QMAKE_RANLIB =
include(../common/unix.conf)
load(qt_config)
diff --git a/mkspecs/hpuxi-g++-64/qmake.conf b/mkspecs/hpuxi-g++-64/qmake.conf
index 5703b8499f..7d83639987 100644
--- a/mkspecs/hpuxi-g++-64/qmake.conf
+++ b/mkspecs/hpuxi-g++-64/qmake.conf
@@ -68,7 +68,6 @@ QMAKE_LIBS = -lm
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_LIBS_YACC = -ly
diff --git a/mkspecs/hurd-g++/qmake.conf b/mkspecs/hurd-g++/qmake.conf
index c6ca94bfcf..36437ead30 100644
--- a/mkspecs/hurd-g++/qmake.conf
+++ b/mkspecs/hurd-g++/qmake.conf
@@ -20,9 +20,9 @@ QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
-QMAKE_INCDIR_EGL =
+QMAKE_INCDIR_EGL =
QMAKE_LIBDIR_EGL =
-QMAKE_INCDIR_OPENVG =
+QMAKE_INCDIR_OPENVG =
QMAKE_LIBDIR_OPENVG =
QMAKE_LIBS =
@@ -31,7 +31,6 @@ QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_EGL = -lEGL
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
QMAKE_LIBS_OPENVG = -lOpenVG
diff --git a/mkspecs/irix-cc-64/qmake.conf b/mkspecs/irix-cc-64/qmake.conf
index f31094a96b..05c2031cdb 100644
--- a/mkspecs/irix-cc-64/qmake.conf
+++ b/mkspecs/irix-cc-64/qmake.conf
@@ -94,7 +94,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL -lm
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_AR = CC -ar -o
diff --git a/mkspecs/irix-cc/qmake.conf b/mkspecs/irix-cc/qmake.conf
index 6e832e01e6..cfd7a98213 100644
--- a/mkspecs/irix-cc/qmake.conf
+++ b/mkspecs/irix-cc/qmake.conf
@@ -94,7 +94,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL -lm
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_AR = CC -ar -o
diff --git a/mkspecs/irix-g++-64/qmake.conf b/mkspecs/irix-g++-64/qmake.conf
index 637f12874a..5f679553ac 100644
--- a/mkspecs/irix-g++-64/qmake.conf
+++ b/mkspecs/irix-g++-64/qmake.conf
@@ -64,7 +64,6 @@ QMAKE_LIBS_X11 = -lXext -lX11 -lm
# with the GNU C++ library (similar name mangling and symbol names?)
# so we add -lC so that the SGI C++ library is used first...
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_AR = ar cq
diff --git a/mkspecs/irix-g++/qmake.conf b/mkspecs/irix-g++/qmake.conf
index 6b1dbbd1f0..8783af4b54 100644
--- a/mkspecs/irix-g++/qmake.conf
+++ b/mkspecs/irix-g++/qmake.conf
@@ -64,7 +64,6 @@ QMAKE_LIBS_X11 = -lXext -lX11 -lm
# with the GNU C++ library (similar name mangling and symbol names?)
# so we add -lC so that the SGI C++ library is used first...
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_AR = ar cq
diff --git a/mkspecs/linux-cxx/qmake.conf b/mkspecs/linux-cxx/qmake.conf
index 6b3d158f68..bc9a1b4800 100644
--- a/mkspecs/linux-cxx/qmake.conf
+++ b/mkspecs/linux-cxx/qmake.conf
@@ -57,7 +57,6 @@ QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_AR = ar cqs
QMAKE_RANLIB =
diff --git a/mkspecs/linux-icc/qmake.conf b/mkspecs/linux-icc/qmake.conf
index 540069499b..353aa8833b 100644
--- a/mkspecs/linux-icc/qmake.conf
+++ b/mkspecs/linux-icc/qmake.conf
@@ -69,7 +69,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_AR = xiar cqs
@@ -82,7 +81,7 @@ QMAKE_CLEAN = -r $(OBJECTS_DIR)/ti_files
CONFIG += icc_pch_style
QMAKE_PCH_OUTPUT_EXT = .pchi
QMAKE_CXXFLAGS_USE_PRECOMPILE = -pch-use ${QMAKE_PCH_OUTPUT} -include ${QMAKE_PCH_INPUT}
-QMAKE_CXXFLAGS_PRECOMPILE = -c -pch-create ${QMAKE_PCH_OUTPUT} -include ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_TEMP_OBJECT} ${QMAKE_PCH_TEMP_SOURCE}
+QMAKE_CXXFLAGS_PRECOMPILE = -c -pch-create ${QMAKE_PCH_OUTPUT} -include ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_TEMP_OBJECT} ${QMAKE_PCH_TEMP_SOURCE}
# -Bsymbolic-functions (ld) support
QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
diff --git a/mkspecs/linux-kcc/qmake.conf b/mkspecs/linux-kcc/qmake.conf
index cbe474fc09..723522100e 100644
--- a/mkspecs/linux-kcc/qmake.conf
+++ b/mkspecs/linux-kcc/qmake.conf
@@ -69,7 +69,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_AR = ar cqs
diff --git a/mkspecs/linux-pgcc/qmake.conf b/mkspecs/linux-pgcc/qmake.conf
index 93c3762f16..8e5bc7118f 100644
--- a/mkspecs/linux-pgcc/qmake.conf
+++ b/mkspecs/linux-pgcc/qmake.conf
@@ -60,7 +60,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_AR = ar cqs
diff --git a/mkspecs/lynxos-g++/qmake.conf b/mkspecs/lynxos-g++/qmake.conf
index 9762b4d76c..4d5b031f39 100644
--- a/mkspecs/lynxos-g++/qmake.conf
+++ b/mkspecs/lynxos-g++/qmake.conf
@@ -64,7 +64,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread
QMAKE_AR = ar cqs
diff --git a/mkspecs/macx-clang-32/qmake.conf b/mkspecs/macx-clang-32/qmake.conf
index b6cceaff91..6a0b65d641 100644
--- a/mkspecs/macx-clang-32/qmake.conf
+++ b/mkspecs/macx-clang-32/qmake.conf
@@ -6,11 +6,12 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/clang.conf)
include(../common/clang-mac.conf)
-include(../common/mac-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
QMAKE_CFLAGS += -arch i386
QMAKE_OBJECTIVE_CFLAGS += -arch i386
diff --git a/mkspecs/macx-clang-libc++-32/qmake.conf b/mkspecs/macx-clang-libc++-32/qmake.conf
index 122205c13d..4ba249be22 100644
--- a/mkspecs/macx-clang-libc++-32/qmake.conf
+++ b/mkspecs/macx-clang-libc++-32/qmake.conf
@@ -6,11 +6,12 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/clang.conf)
include(../common/clang-mac.conf)
-include(../common/mac-clang-libc++-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
QMAKE_CFLAGS += -arch i386
QMAKE_OBJECTIVE_CFLAGS += -arch i386 -stdlib=libc++
diff --git a/mkspecs/macx-clang-libc++/qmake.conf b/mkspecs/macx-clang-libc++/qmake.conf
index 700959865e..a8858f0b73 100644
--- a/mkspecs/macx-clang-libc++/qmake.conf
+++ b/mkspecs/macx-clang-libc++/qmake.conf
@@ -6,11 +6,12 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/clang.conf)
include(../common/clang-mac.conf)
-include(../common/mac-clang-libc++-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.7
QMAKE_OBJECTIVE_CFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -stdlib=libc++
diff --git a/mkspecs/macx-clang/qmake.conf b/mkspecs/macx-clang/qmake.conf
index 64ce81cabe..2a6a5a95bc 100644
--- a/mkspecs/macx-clang/qmake.conf
+++ b/mkspecs/macx-clang/qmake.conf
@@ -6,10 +6,11 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/clang.conf)
include(../common/clang-mac.conf)
-include(../common/mac-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
load(qt_config)
diff --git a/mkspecs/macx-g++-32/qmake.conf b/mkspecs/macx-g++-32/qmake.conf
index 845c3874dc..aa3df18ec6 100644
--- a/mkspecs/macx-g++-32/qmake.conf
+++ b/mkspecs/macx-g++-32/qmake.conf
@@ -10,10 +10,11 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/g++-macx.conf)
-include(../common/mac-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
QMAKE_CFLAGS += -arch i386
QMAKE_OBJECTIVE_CFLAGS += -arch i386
diff --git a/mkspecs/macx-g++/qmake.conf b/mkspecs/macx-g++/qmake.conf
index 32da734e87..c7aa9752d1 100644
--- a/mkspecs/macx-g++/qmake.conf
+++ b/mkspecs/macx-g++/qmake.conf
@@ -10,9 +10,10 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/g++-macx.conf)
-include(../common/mac-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
load(qt_config)
diff --git a/mkspecs/macx-g++40/qmake.conf b/mkspecs/macx-g++40/qmake.conf
index 7f581ae58d..23aee379a9 100644
--- a/mkspecs/macx-g++40/qmake.conf
+++ b/mkspecs/macx-g++40/qmake.conf
@@ -10,10 +10,11 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/g++-macx.conf)
-include(../common/mac-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
QMAKE_CC = gcc-4.0
QMAKE_CXX = g++-4.0
diff --git a/mkspecs/macx-g++42/qmake.conf b/mkspecs/macx-g++42/qmake.conf
index d4803da3cc..5c1df37027 100644
--- a/mkspecs/macx-g++42/qmake.conf
+++ b/mkspecs/macx-g++42/qmake.conf
@@ -10,10 +10,11 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/g++-macx.conf)
-include(../common/mac-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
QMAKE_CC = gcc-4.2
QMAKE_CXX = g++-4.2
diff --git a/mkspecs/macx-icc/qmake.conf b/mkspecs/macx-icc/qmake.conf
index 1aa252a0ed..45e826ba4c 100644
--- a/mkspecs/macx-icc/qmake.conf
+++ b/mkspecs/macx-icc/qmake.conf
@@ -12,62 +12,62 @@
# warning #1569: potential redeclared typedef
#
-MAKEFILE_GENERATOR = UNIX
+MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle
QMAKE_INCREMENTAL_STYLE = sublibs
QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__
-QMAKE_COMPILER = gcc intel_icc # icc pretends to be gcc
+QMAKE_COMPILER = gcc intel_icc # icc pretends to be gcc
-QMAKE_CC = icc
-QMAKE_CFLAGS = -wd858,1572,1569,279
-QMAKE_CFLAGS_DEPS = -M
-QMAKE_CFLAGS_WARN_ON =
-QMAKE_CFLAGS_WARN_OFF = -w
-QMAKE_CFLAGS_RELEASE =
-QMAKE_CFLAGS_DEBUG = -g
-QMAKE_CFLAGS_SHLIB = -fpic
-QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
-QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
-QMAKE_CFLAGS_THREAD =
+QMAKE_CC = icc
+QMAKE_CFLAGS = -wd858,1572,1569,279
+QMAKE_CFLAGS_DEPS = -M
+QMAKE_CFLAGS_WARN_ON =
+QMAKE_CFLAGS_WARN_OFF = -w
+QMAKE_CFLAGS_RELEASE =
+QMAKE_CFLAGS_DEBUG = -g
+QMAKE_CFLAGS_SHLIB = -fpic
+QMAKE_CFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_THREAD =
QMAKE_OBJECTIVE_CC = gcc
-QMAKE_OBJECTIVE_CFLAGS = -pipe
-QMAKE_OBJECTIVE_CFLAGS_WARN_ON = -Wall -W
-QMAKE_OBJECTIVE_CFLAGS_WARN_OFF = -w
-QMAKE_OBJECTIVE_CFLAGS_RELEASE = -Os
-QMAKE_OBJECTIVE_CFLAGS_DEBUG = -g
-QMAKE_OBJECTIVE_CFLAGS_HIDESYMS = -fvisibility=hidden
+QMAKE_OBJECTIVE_CFLAGS = -pipe
+QMAKE_OBJECTIVE_CFLAGS_WARN_ON = -Wall -W
+QMAKE_OBJECTIVE_CFLAGS_WARN_OFF = -w
+QMAKE_OBJECTIVE_CFLAGS_RELEASE = -Os
+QMAKE_OBJECTIVE_CFLAGS_DEBUG = -g
+QMAKE_OBJECTIVE_CFLAGS_HIDESYMS = -fvisibility=hidden
-QMAKE_CXX = icpc
-QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
-QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
-QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXX = icpc
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB = $$QMAKE_CFLAGS_SHLIB
QMAKE_CXXFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_STATIC_LIB
-QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
-QMAKE_LINK = icpc
-QMAKE_LINK_SHLIB = icpc
-QMAKE_LFLAGS = -headerpad_max_install_names
-QMAKE_LFLAGS_RELEASE =
-QMAKE_LFLAGS_DEBUG =
-QMAKE_LFLAGS_SHLIB = -single_module -dynamiclib
+QMAKE_LINK = icpc
+QMAKE_LINK_SHLIB = icpc
+QMAKE_LFLAGS = -headerpad_max_install_names
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG =
+QMAKE_LFLAGS_SHLIB = -ingle_module -dynamiclib
QMAKE_LFLAGS_INCREMENTAL = -undefined suppress -flat_namespace
-QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
-QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}
-QMAKE_LFLAGS_THREAD =
-QMAKE_LFLAGS_RPATH =
+QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME = -install_name$${LITERAL_WHITESPACE}
+QMAKE_LFLAGS_THREAD =
+QMAKE_LFLAGS_RPATH =
QMAKE_LFLAGS_VERSION = -current_version$${LITERAL_WHITESPACE}
QMAKE_LFLAGS_COMPAT_VERSION = -compatibility_version$${LITERAL_WHITESPACE}
-QMAKE_CLEAN = -r $(OBJECTS_DIR)/ti_files
+QMAKE_CLEAN = -r $(OBJECTS_DIR)/ti_files
-include(../common/mac.conf)
+include(../common/macx.conf)
load(qt_config)
diff --git a/mkspecs/macx-llvm/qmake.conf b/mkspecs/macx-llvm/qmake.conf
index d43eefe002..daacd1f00e 100644
--- a/mkspecs/macx-llvm/qmake.conf
+++ b/mkspecs/macx-llvm/qmake.conf
@@ -10,10 +10,13 @@ MAKEFILE_GENERATOR = UNIX
CONFIG += app_bundle incremental global_init_link_order lib_version_first plugin_no_soname
QMAKE_INCREMENTAL_STYLE = sublib
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/llvm.conf)
-include(../common/mac-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
+
+QMAKE_XCODE_GCC_VERSION = com.apple.compilers.llvmgcc42
QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
diff --git a/mkspecs/macx-xcode/qmake.conf b/mkspecs/macx-xcode/qmake.conf
index 8504310c79..131619de32 100644
--- a/mkspecs/macx-xcode/qmake.conf
+++ b/mkspecs/macx-xcode/qmake.conf
@@ -4,22 +4,23 @@
# Mac OS X + XCode
#
-MAKEFILE_GENERATOR = XCODE
-CONFIG += lib_version_first incremental plugin_no_soname app_bundle
+MAKEFILE_GENERATOR = XCODE
+CONFIG += lib_version_first incremental plugin_no_soname app_bundle
-include(../common/mac.conf)
-include(../common/gcc-base-macx.conf)
+include(../common/macx.conf)
+include(../common/gcc-base-mac.conf)
include(../common/g++-macx.conf)
-include(../common/mac-minimum-version.conf)
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
QMAKE_LINK =
QMAKE_LINK_C =
QMAKE_LINK_C_SHLIB =
QMAKE_LINK_SHLIB =
-QMAKE_CFLAGS_HIDESYMS =
+QMAKE_CFLAGS_HIDESYMS =
QMAKE_LFLAGS_VERSION =
QMAKE_LFLAGS_COMPAT_VERSION =
QMAKE_LFLAGS_SONAME =
-QMAKE_INCDIR += /usr/local/include /System/Library/Frameworks/CarbonCore.framework/Headers
+QMAKE_INCDIR += /usr/local/include /System/Library/Frameworks/CarbonCore.framework/Headers
load(qt_config)
diff --git a/mkspecs/netbsd-g++/qmake.conf b/mkspecs/netbsd-g++/qmake.conf
index 5e6dd8f13c..7aa1bf0561 100644
--- a/mkspecs/netbsd-g++/qmake.conf
+++ b/mkspecs/netbsd-g++/qmake.conf
@@ -62,7 +62,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_AR = ar cqs
diff --git a/mkspecs/openbsd-g++/qmake.conf b/mkspecs/openbsd-g++/qmake.conf
index 8dc53a620b..bc13ad3892 100644
--- a/mkspecs/openbsd-g++/qmake.conf
+++ b/mkspecs/openbsd-g++/qmake.conf
@@ -63,7 +63,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_AR = ar q
diff --git a/mkspecs/sco-cc/qmake.conf b/mkspecs/sco-cc/qmake.conf
index ccd3aaa290..daf3582e01 100644
--- a/mkspecs/sco-cc/qmake.conf
+++ b/mkspecs/sco-cc/qmake.conf
@@ -57,7 +57,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl -lm
QMAKE_LIBS_OPENGL = -lGL -lXt
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_AR = ar cq
QMAKE_OBJCOPY = objcopy
diff --git a/mkspecs/sco-g++/qmake.conf b/mkspecs/sco-g++/qmake.conf
index 68d655ad4b..85c7ce3756 100644
--- a/mkspecs/sco-g++/qmake.conf
+++ b/mkspecs/sco-g++/qmake.conf
@@ -59,7 +59,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lsocket -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_AR = ar cqs
QMAKE_OBJCOPY = objcopy
diff --git a/mkspecs/solaris-cc-64/qmake.conf b/mkspecs/solaris-cc-64/qmake.conf
index f88a71687c..48207f5545 100644
--- a/mkspecs/solaris-cc-64/qmake.conf
+++ b/mkspecs/solaris-cc-64/qmake.conf
@@ -80,7 +80,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl
QMAKE_LIBS_NIS =
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread -lrt
QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet -lnsl
diff --git a/mkspecs/solaris-cc/qmake.conf b/mkspecs/solaris-cc/qmake.conf
index 83d3918a77..4d3716518a 100644
--- a/mkspecs/solaris-cc/qmake.conf
+++ b/mkspecs/solaris-cc/qmake.conf
@@ -63,7 +63,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl
QMAKE_LIBS_NIS =
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread -lrt
QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet -lnsl
diff --git a/mkspecs/solaris-g++-64/qmake.conf b/mkspecs/solaris-g++-64/qmake.conf
index 96044a1c8c..5723b7584c 100644
--- a/mkspecs/solaris-g++-64/qmake.conf
+++ b/mkspecs/solaris-g++-64/qmake.conf
@@ -84,7 +84,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl
QMAKE_LIBS_NIS =
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread -lrt
QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet -lnsl
diff --git a/mkspecs/solaris-g++/qmake.conf b/mkspecs/solaris-g++/qmake.conf
index ff2c01ca2c..1c3cb53ec6 100644
--- a/mkspecs/solaris-g++/qmake.conf
+++ b/mkspecs/solaris-g++/qmake.conf
@@ -67,7 +67,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl
QMAKE_LIBS_NIS =
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread -lrt
QMAKE_LIBS_NETWORK = -lresolv -lsocket -lxnet -lnsl
diff --git a/mkspecs/tru64-cxx/qmake.conf b/mkspecs/tru64-cxx/qmake.conf
index 34285d6f08..6c5c52df17 100644
--- a/mkspecs/tru64-cxx/qmake.conf
+++ b/mkspecs/tru64-cxx/qmake.conf
@@ -58,7 +58,6 @@ QMAKE_LIBS = -lm
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lrt
QMAKE_AR = ar cqs
diff --git a/mkspecs/tru64-g++/qmake.conf b/mkspecs/tru64-g++/qmake.conf
index 7e2c748b45..ef27702680 100644
--- a/mkspecs/tru64-g++/qmake.conf
+++ b/mkspecs/tru64-g++/qmake.conf
@@ -60,7 +60,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lpthread -lexc -lrt
QMAKE_AR = ar cqs
diff --git a/mkspecs/unixware-cc/qmake.conf b/mkspecs/unixware-cc/qmake.conf
index 21940089d9..e96f8e890b 100644
--- a/mkspecs/unixware-cc/qmake.conf
+++ b/mkspecs/unixware-cc/qmake.conf
@@ -61,7 +61,6 @@ QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl -lm
QMAKE_LIBS_OPENGL = -lGL -lXt
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
diff --git a/mkspecs/unixware-g++/qmake.conf b/mkspecs/unixware-g++/qmake.conf
index a55f570f81..6e5ea9fbb1 100644
--- a/mkspecs/unixware-g++/qmake.conf
+++ b/mkspecs/unixware-g++/qmake.conf
@@ -61,7 +61,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lresolv -lsocket -lnsl -lm
QMAKE_LIBS_OPENGL = -lGL -lXt
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD = -lthread
QMAKE_AR = ar cq
diff --git a/mkspecs/unsupported/android-g++/qeglfshooks_surfaceflinger.cpp b/mkspecs/unsupported/android-g++/qeglfshooks_surfaceflinger.cpp
index 2329bf1eb0..78a1eb183e 100644
--- a/mkspecs/unsupported/android-g++/qeglfshooks_surfaceflinger.cpp
+++ b/mkspecs/unsupported/android-g++/qeglfshooks_surfaceflinger.cpp
@@ -43,12 +43,17 @@
#include <ui/DisplayInfo.h>
#include <ui/FramebufferNativeWindow.h>
-#include <gui/SurfaceComposerClient.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/fb.h>
#include <sys/ioctl.h>
+#if Q_ANDROID_VERSION_MAJOR > 4 || (Q_ANDROID_VERSION_MAJOR == 4 && Q_ANDROID_VERSION_MINOR >= 1)
+#include <gui/SurfaceComposerClient.h>
+#else
+#include <surfaceflinger/SurfaceComposerClient.h>
+#endif
+
using namespace android;
QT_BEGIN_NAMESPACE
@@ -56,17 +61,61 @@ QT_BEGIN_NAMESPACE
class QEglFSPandaHooks : public QEglFSHooks
{
public:
+ QEglFSPandaHooks();
virtual EGLNativeWindowType createNativeWindow(const QSize &size, const QSurfaceFormat &format);
- virtual QSize screenSize() const;
- virtual int screenDepth() const;
+ virtual bool filterConfig(EGLDisplay display, EGLConfig config) const;
+ virtual const char *fbDeviceName() const { return "/dev/graphics/fb0"; }
+
private:
+ EGLNativeWindowType createNativeWindowSurfaceFlinger(const QSize &size, const QSurfaceFormat &format);
+ EGLNativeWindowType createNativeWindowFramebuffer(const QSize &size, const QSurfaceFormat &format);
+
+ void ensureFramebufferNativeWindowCreated();
+
// androidy things
sp<android::SurfaceComposerClient> mSession;
sp<android::SurfaceControl> mControl;
sp<android::Surface> mAndroidSurface;
+
+ sp<android::FramebufferNativeWindow> mFramebufferNativeWindow;
+ EGLint mFramebufferVisualId;
+
+ bool mUseFramebuffer;
};
-EGLNativeWindowType QEglFSPandaHooks::createNativeWindow(const QSize &size, const QSurfaceFormat &)
+QEglFSPandaHooks::QEglFSPandaHooks()
+ : mFramebufferVisualId(EGL_DONT_CARE)
+{
+ mUseFramebuffer = qgetenv("QT_QPA_EGLFS_NO_SURFACEFLINGER").toInt();
+}
+
+void QEglFSPandaHooks::ensureFramebufferNativeWindowCreated()
+{
+ if (mFramebufferNativeWindow.get())
+ return;
+ mFramebufferNativeWindow = new FramebufferNativeWindow();
+ framebuffer_device_t const *fbDev = mFramebufferNativeWindow->getDevice();
+ if (!fbDev)
+ qFatal("Failed to get valid FramebufferNativeWindow, no way to create EGL surfaces");
+
+ ANativeWindow *window = mFramebufferNativeWindow.get();
+
+ window->query(window, NATIVE_WINDOW_FORMAT, &mFramebufferVisualId);
+}
+
+EGLNativeWindowType QEglFSPandaHooks::createNativeWindow(const QSize &size, const QSurfaceFormat &format)
+{
+ return mUseFramebuffer ? createNativeWindowFramebuffer(size, format) : createNativeWindowSurfaceFlinger(size, format);
+}
+
+EGLNativeWindowType QEglFSPandaHooks::createNativeWindowFramebuffer(const QSize &size, const QSurfaceFormat &)
+{
+ Q_UNUSED(size);
+ ensureFramebufferNativeWindowCreated();
+ return mFramebufferNativeWindow.get();
+}
+
+EGLNativeWindowType QEglFSPandaHooks::createNativeWindowSurfaceFlinger(const QSize &size, const QSurfaceFormat &)
{
Q_UNUSED(size);
@@ -85,66 +134,21 @@ EGLNativeWindowType QEglFSPandaHooks::createNativeWindow(const QSize &size, cons
EGLNativeWindowType eglWindow = mAndroidSurface.get();
return eglWindow;
}
-QSize QEglFSPandaHooks::screenSize() const
-{
- static QSize size;
-
- if (size.isEmpty()) {
- int width = qgetenv("QT_QPA_EGLFS_WIDTH").toInt();
- int height = qgetenv("QT_QPA_EGLFS_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("/dev/graphics/fb0", O_RDONLY);
-
- if (fd != -1) {
- if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1)
- qWarning("Could not query variable screen info.");
- else
- size = QSize(vinfo.xres, vinfo.yres);
-
- close(fd);
- } else {
- qWarning("Failed to open /dev/graphics/fb0 to detect screen resolution.");
- }
-
- // override fb0 from environment var setting
- if (width)
- size.setWidth(width);
- if (height)
- size.setHeight(height);
- }
-
- return size;
-}
-int QEglFSPandaHooks::screenDepth() const
+bool QEglFSPandaHooks::filterConfig(EGLDisplay display, EGLConfig config) const
{
- static int depth = qgetenv("QT_QPA_EGLFS_DEPTH").toInt();
+ if (!mUseFramebuffer)
+ return true;
- if (depth == 0) {
- struct fb_var_screeninfo vinfo;
- int fd = open("/dev/graphics/fb0", O_RDONLY);
+ const_cast<QEglFSPandaHooks *>(this)->ensureFramebufferNativeWindowCreated();
- if (fd != -1) {
- if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1)
- qWarning("Could not query variable screen info.");
- else
- depth = vinfo.bits_per_pixel;
+ if (mFramebufferVisualId == EGL_DONT_CARE)
+ return true;
- close(fd);
- } else {
- qWarning("Failed to open /dev/graphics/fb0 to detect screen depth.");
- }
- }
+ EGLint nativeVisualId = 0;
+ eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &nativeVisualId);
- return depth == 0 ? 32 : depth;
+ return nativeVisualId == mFramebufferVisualId;
}
static QEglFSPandaHooks eglFSPandaHooks;
diff --git a/mkspecs/unsupported/android-g++/qmake.conf b/mkspecs/unsupported/android-g++/qmake.conf
index 8e0af9268d..1955054880 100644
--- a/mkspecs/unsupported/android-g++/qmake.conf
+++ b/mkspecs/unsupported/android-g++/qmake.conf
@@ -18,11 +18,13 @@ defineReplace(getAndroidBuildVar) {
store_ANDROID_TARGET_CFLAGS = "ANDROID_TARGET_CFLAGS=$$getAndroidBuildVar(TARGET_GLOBAL_CFLAGS)"
store_ANDROID_TARGET_LDFLAGS = "ANDROID_TARGET_LDFLAGS=$$getAndroidBuildVar(TARGET_GLOBAL_LDFLAGS)"
store_ANDROID_TARGET_ARCH = "ANDROID_TARGET_ARCH=$$getAndroidBuildVar(TARGET_ARCH)"
+ store_ANDROID_VERSION = "ANDROID_VERSION=$$getAndroidBuildVar(PLATFORM_VERSION)"
write_file(android_build_vars, store_ANDROID_TOOLCHAIN_PREFIX)
write_file(android_build_vars, store_ANDROID_TARGET_CFLAGS, append)
write_file(android_build_vars, store_ANDROID_TARGET_LDFLAGS, append)
write_file(android_build_vars, store_ANDROID_TARGET_ARCH, append)
+ write_file(android_build_vars, store_ANDROID_VERSION, append)
}
info(using android build env from cache in $$PWD/android_build_vars . delete this file if you changed your build env )
@@ -30,6 +32,9 @@ exists($$PWD/android_build_vars) {
include($$PWD/android_build_vars)
}
+ANDROID_VERSION_SPLIT = $$split(ANDROID_VERSION, ".")
+ANDROID_VERSION_MAJOR = $$member(ANDROID_VERSION_SPLIT, 0)
+ANDROID_VERSION_MINOR = $$member(ANDROID_VERSION_SPLIT, 1)
MAKEFILE_GENERATOR = UNIX
QMAKE_COMPILER = gcc
@@ -42,7 +47,9 @@ include(../../common/gcc-base-unix.conf)
CONFIG = qt warn_on release link_prl
QT = core gui
-DEFINES += Q_OS_LINUX_ANDROID HAVE_ANDROID_OS
+DEFINES += HAVE_ANDROID_OS Q_OS_ANDROID_NO_SDK
+DEFINES += Q_ANDROID_VERSION_MAJOR=$$ANDROID_VERSION_MAJOR
+DEFINES += Q_ANDROID_VERSION_MINOR=$$ANDROID_VERSION_MINOR
DEFINES += QT_NO_PRINTER QT_NO_PRINTDIALOG QT_NO_EXCEPTIONS
#note: -DANDROID results in weird behaviour of math.h
@@ -50,7 +57,7 @@ DEFINES += ANDROID
QT_QPA_DEFAULT_PLATFORM = eglfs
EGLFS_PLATFORM_HOOKS_SOURCES = $$PWD/qeglfshooks_surfaceflinger.cpp
-EGLFS_PLATFORM_HOOKS_LIBS += -lgui -lutils
+EGLFS_PLATFORM_HOOKS_LIBS += -lui -lgui -lutils -lcutils
QMAKE_CC = $${ANDROID_TOOLCHAIN_PREFIX}gcc
@@ -164,14 +171,12 @@ QMAKE_LIBS_QT_OPENGL =
QMAKE_LIBS_QTOPIA =
QMAKE_LIBS_THREAD =
QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_OPENGL_QT =
QMAKE_LIBS_OPENGL_ES1 = -lGLESv1_CM
QMAKE_LIBS_OPENGL_ES2 = -lEGL -lGLESv2 $$QMAKE_LIBS
-CONFIG += linux-android-9 android-9 linux-android android
+CONFIG += linux-android-9 android-9 linux-android android android-no-sdk android_app
load(qt_config)
-QT_CONFIG -=accessibility
# we don't support exceptions, but right now this has no effect
# you need to manually delete mkspecs/features/exceptions.prf
diff --git a/mkspecs/unsupported/linux-android-armeabi-g++/qmake.conf b/mkspecs/unsupported/linux-android-armeabi-g++/qmake.conf
deleted file mode 100644
index ea988d3a51..0000000000
--- a/mkspecs/unsupported/linux-android-armeabi-g++/qmake.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# qmake configuration for building with android-g++ for ARMv5
-#
-
-ANDROID_TARGET_ARCH = armeabi
-ANDROID_ARCHITECTURE = arm
-ANDROID_NDK_TOOLCHAIN_PREFIX = arm-linux-androideabi
-ANDROID_NDK_TOOLS_PREFIX = arm-linux-androideabi
-QMAKE_CFLAGS = -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack
-QMAKE_CFLAGS_RELEASE = -g -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64
-QMAKE_CFLAGS_DEBUG = -g -marm -O0 -fno-omit-frame-pointer
-
-include(../../common/linux-android.conf)
-
diff --git a/mkspecs/unsupported/linux-android-armeabi-v7a-g++/qmake.conf b/mkspecs/unsupported/linux-android-armeabi-v7a-g++/qmake.conf
deleted file mode 100644
index 70445a536f..0000000000
--- a/mkspecs/unsupported/linux-android-armeabi-v7a-g++/qmake.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# qmake configuration for building with android-g++ for ARMv7
-#
-
-ANDROID_TARGET_ARCH = armeabi-v7a
-ANDROID_ARCHITECTURE = arm
-ANDROID_NDK_TOOLCHAIN_PREFIX = arm-linux-androideabi
-ANDROID_NDK_TOOLS_PREFIX = arm-linux-androideabi
-QMAKE_CFLAGS = -Wno-psabi -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -DANDROID -Wa,--noexecstack
-QMAKE_CFLAGS_RELEASE = -g -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64
-QMAKE_CFLAGS_DEBUG = -g -marm -O0 -fno-omit-frame-pointer
-
-include(../../common/linux-android.conf)
-
diff --git a/mkspecs/unsupported/linux-android-x86-g++/qmake.conf b/mkspecs/unsupported/linux-android-x86-g++/qmake.conf
deleted file mode 100644
index 5a51704b38..0000000000
--- a/mkspecs/unsupported/linux-android-x86-g++/qmake.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# qmake configuration for building with android-g++ for x86
-#
-
-ANDROID_TARGET_ARCH = x86
-ANDROID_ARCHITECTURE = x86
-ANDROID_NDK_TOOLCHAIN_PREFIX = x86
-ANDROID_NDK_TOOLS_PREFIX = i686-android-linux
-QMAKE_CFLAGS = -ffunction-sections -funwind-tables -O2 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300 -DANDROID -Wa,--noexecstack
-QMAKE_CFLAGS_RELEASE = -g -O2
-QMAKE_CFLAGS_DEBUG = -g
-
-include(../../common/linux-android.conf)
-
diff --git a/mkspecs/unsupported/linux-host-g++/qmake.conf b/mkspecs/unsupported/linux-host-g++/qmake.conf
index 3e5840e7f4..47579600c1 100644
--- a/mkspecs/unsupported/linux-host-g++/qmake.conf
+++ b/mkspecs/unsupported/linux-host-g++/qmake.conf
@@ -4,9 +4,9 @@
# This mkspec can be used as the platform mkspec when building
# Qt in scratchbox. If used as such, qmake and similar host
# tools will be compiled for the host architecture (E.g. x86)
-# and thus not run in the emulator. This results in a
+# and thus not run in the emulator. This results in a
# significant improvement in build times.
-#
+#
# Note: The mkspec copied & pasted parts from common/gcc.conf
# and common/linux.conf as setBootstrapVariable in
# configure has a bug which stops re-assignments working
@@ -89,9 +89,9 @@ QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL
QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL
-QMAKE_INCDIR_EGL =
+QMAKE_INCDIR_EGL =
QMAKE_LIBDIR_EGL =
-QMAKE_INCDIR_OPENVG =
+QMAKE_INCDIR_OPENVG =
QMAKE_LIBDIR_OPENVG =
QMAKE_LIBS =
@@ -100,7 +100,6 @@ QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_EGL = -lEGL
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
QMAKE_LIBS_OPENVG = -lOpenVG
diff --git a/mkspecs/unsupported/macx-ios-clang/Info.plist.app b/mkspecs/unsupported/macx-ios-clang/Info.plist.app
new file mode 100755
index 0000000000..bcf7f41f27
--- /dev/null
+++ b/mkspecs/unsupported/macx-ios-clang/Info.plist.app
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>CFBundleIconFile</key>
+ <string>@ICON@</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleGetInfoString</key>
+ <string>Created by Qt/QMake</string>
+ <key>CFBundleSignature</key>
+ <string>@TYPEINFO@</string>
+ <key>CFBundleExecutable</key>
+ <string>@EXECUTABLE@</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.yourcompany.@BUNDLEIDENTIFIER@</string>
+ <key>NOTE</key>
+ <string>This file was generated by Qt/QMake.</string>
+</dict>
+</plist>
diff --git a/mkspecs/unsupported/macx-ios-clang/Info.plist.lib b/mkspecs/unsupported/macx-ios-clang/Info.plist.lib
new file mode 100644
index 0000000000..97609ed0ce
--- /dev/null
+++ b/mkspecs/unsupported/macx-ios-clang/Info.plist.lib
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>CFBundlePackageType</key>
+ <string>FMWK</string>
+ <key>CFBundleShortVersionString</key>
+ <string>@SHORT_VERSION@</string>
+ <key>CFBundleGetInfoString</key>
+ <string>Created by Qt/QMake</string>
+ <key>CFBundleSignature</key>
+ <string>@TYPEINFO@</string>
+ <key>CFBundleExecutable</key>
+ <string>@LIBRARY@</string>
+ <key>NOTE</key>
+ <string>Please, do NOT change this file -- It was generated by Qt/QMake.</string>
+</dict>
+</plist>
diff --git a/mkspecs/unsupported/macx-ios-clang/qmake.conf b/mkspecs/unsupported/macx-ios-clang/qmake.conf
new file mode 100644
index 0000000000..7805c079bb
--- /dev/null
+++ b/mkspecs/unsupported/macx-ios-clang/qmake.conf
@@ -0,0 +1,28 @@
+#
+# qmake configuration for macx-ios-clang
+#
+
+MAKEFILE_GENERATOR = UNIX
+CONFIG += app_bundle reduce_exports incremental global_init_link_order lib_version_first plugin_no_soname sdk
+QMAKE_INCREMENTAL_STYLE = sublib
+
+QMAKE_MACOSX_DEPLOYMENT_TARGET =
+QMAKE_IOS_DEPLOYMENT_TARGET = 4.3
+
+INCLUDEPATH += $$PWD/ios
+DEFINES += DARWIN_NO_CARBON QT_NO_CORESERVICES QT_NO_PRINTER QT_NO_PRINTDIALOG
+
+# Universal target (iPhone and iPad)
+QMAKE_IOS_TARGETED_DEVICE_FAMILY = 1,2
+
+include(../../common/xcode.conf)
+lessThan(QMAKE_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.3 or later")
+
+include(../../common/ios.conf)
+include(../../common/gcc-base-mac.conf)
+include(../../common/clang.conf)
+include(../../common/clang-mac.conf)
+include(../../common/ios/clang.conf)
+include(../../common/ios/qmake.conf)
+
+load(qt_config)
diff --git a/mkspecs/unsupported/macx-iosdevice-clang-legacy/qplatformdefs.h b/mkspecs/unsupported/macx-ios-clang/qplatformdefs.h
index 5f80a17860..581ad0d485 100644
--- a/mkspecs/unsupported/macx-iosdevice-clang-legacy/qplatformdefs.h
+++ b/mkspecs/unsupported/macx-ios-clang/qplatformdefs.h
@@ -39,4 +39,4 @@
**
****************************************************************************/
-#include "../../common/ios/qplatformdefs.h"
+#include "../../common/mac/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iosdevice-clang-legacy/qmake.conf b/mkspecs/unsupported/macx-iosdevice-clang-legacy/qmake.conf
deleted file mode 100644
index ff8e0b6aa9..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-clang-legacy/qmake.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# qmake configuration for ios-device-clang
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/clang.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/clang.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.2.x or earlier")
-
-# iOS build tools
-QMAKE_CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang
-QMAKE_CXX = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++
-QMAKE_FIX_RPATH = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the clang compiler")
-
-load(qt_config)
-
-# Include after config is loaded to allow autodetection on GL/ES version
-include(../../common/ios/arch.conf)
diff --git a/mkspecs/unsupported/macx-iosdevice-clang/qmake.conf b/mkspecs/unsupported/macx-iosdevice-clang/qmake.conf
deleted file mode 100644
index 777b5ab6e2..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-clang/qmake.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# qmake configuration for ios-device-clang
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/clang.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/clang.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check
-lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.3 or later")
-
-# iOS build tools
-QMAKE_CC = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
-QMAKE_CXX = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
-QMAKE_FIX_RPATH = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/install_name_tool -id
-QMAKE_AR = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar cq
-QMAKE_RANLIB = /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the clang compiler")
-
-load(qt_config)
-
-# Include after config is loaded to allow autodetection on GL/ES version
-include(../../common/ios/arch.conf)
diff --git a/mkspecs/unsupported/macx-iosdevice-g++-legacy/qmake.conf b/mkspecs/unsupported/macx-iosdevice-g++-legacy/qmake.conf
deleted file mode 100644
index 5fcfb4a51d..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-g++-legacy/qmake.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# qmake configuration for ios-device-g++
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/g++-macx.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/g++.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check (g++ was discontinued at version 4.2, but user may have added it themselves)
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.2.x or earlier")
-
-# iOS build tools
-QMAKE_CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2
-QMAKE_CXX = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2
-QMAKE_FIX_RPATH = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the g++ 4.2 compiler")
-
-load(qt_config)
-
-# Include after config is loaded to allow autodetection on GL/ES version
-include(../../common/ios/arch.conf)
diff --git a/mkspecs/unsupported/macx-iosdevice-g++/qmake.conf b/mkspecs/unsupported/macx-iosdevice-g++/qmake.conf
deleted file mode 100644
index 2a29335334..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-g++/qmake.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# qmake configuration for ios-device-g++
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/g++-macx.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/g++.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check (g++ was discontinued at version 4.2, but user may have added it themselves)
-lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.3 or later")
-
-# iOS build tools
-QMAKE_CC = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2
-QMAKE_CXX = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2
-QMAKE_FIX_RPATH = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the g++ 4.2 compiler")
-
-load(qt_config)
-
-# Include after config is loaded to allow autodetection on GL/ES version
-include(../../common/ios/arch.conf)
diff --git a/mkspecs/unsupported/macx-iosdevice-g++/qplatformdefs.h b/mkspecs/unsupported/macx-iosdevice-g++/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-g++/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iosdevice-llvm-legacy/qmake.conf b/mkspecs/unsupported/macx-iosdevice-llvm-legacy/qmake.conf
deleted file mode 100644
index 4554843610..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-llvm-legacy/qmake.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# qmake configuration for ios-device-llvm
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/llvm.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/llvm.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.2.x or earlier")
-
-# iOS build tools
-QMAKE_CC = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2
-QMAKE_CXX = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2
-QMAKE_FIX_RPATH = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the llvm-g++ 4.2 compiler")
-
-load(qt_config)
-
-# Include after config is loaded to allow autodetection on GL/ES version
-include(../../common/ios/arch.conf)
diff --git a/mkspecs/unsupported/macx-iosdevice-llvm-legacy/qplatformdefs.h b/mkspecs/unsupported/macx-iosdevice-llvm-legacy/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-llvm-legacy/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iosdevice-llvm/qmake.conf b/mkspecs/unsupported/macx-iosdevice-llvm/qmake.conf
deleted file mode 100644
index 335c68fd42..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-llvm/qmake.conf
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# qmake configuration for ios-device-llvm
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/llvm.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/llvm.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check
-lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.3 or later")
-
-# iOS build tools
-QMAKE_CC = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2
-QMAKE_CXX = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2
-QMAKE_FIX_RPATH = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the llvm-g++ 4.2 compiler")
-
-load(qt_config)
-
-# Include after config is loaded to allow autodetection on GL/ES version
-include(../../common/ios/arch.conf)
diff --git a/mkspecs/unsupported/macx-iosdevice-llvm/qplatformdefs.h b/mkspecs/unsupported/macx-iosdevice-llvm/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iosdevice-llvm/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iossimulator-clang-legacy/qmake.conf b/mkspecs/unsupported/macx-iossimulator-clang-legacy/qmake.conf
deleted file mode 100644
index b042766a39..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-clang-legacy/qmake.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# qmake configuration for ios-simulator-clang
-#
-
-# All differences between device and simulator are handled in iOS include files
-include(../macx-iosdevice-clang-legacy/qmake.conf)
diff --git a/mkspecs/unsupported/macx-iossimulator-clang-legacy/qplatformdefs.h b/mkspecs/unsupported/macx-iossimulator-clang-legacy/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-clang-legacy/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iossimulator-clang/qmake.conf b/mkspecs/unsupported/macx-iossimulator-clang/qmake.conf
deleted file mode 100644
index 11301cb72f..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-clang/qmake.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# qmake configuration for ios-simulator-clang
-#
-
-# All differences between device and simulator are handled in iOS include files
-include(../macx-iosdevice-clang/qmake.conf)
diff --git a/mkspecs/unsupported/macx-iossimulator-clang/qplatformdefs.h b/mkspecs/unsupported/macx-iossimulator-clang/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-clang/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iossimulator-g++-legacy/qmake.conf b/mkspecs/unsupported/macx-iossimulator-g++-legacy/qmake.conf
deleted file mode 100644
index abc695231e..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-g++-legacy/qmake.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# qmake configuration for ios-simulator-g++
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/g++-macx.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/arch.conf)
-include(../../common/ios/g++.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check (g++ was discontinued at version 4.2)
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.2"): error("This mkspec requires Xcode 4.1.x or earlier")
-
-# iOS build tools
-QMAKE_CC = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2
-QMAKE_CXX = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2
-QMAKE_FIX_RPATH = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the g++ 4.2 compiler")
-
-load(qt_config)
diff --git a/mkspecs/unsupported/macx-iossimulator-g++-legacy/qplatformdefs.h b/mkspecs/unsupported/macx-iossimulator-g++-legacy/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-g++-legacy/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iossimulator-g++/qmake.conf b/mkspecs/unsupported/macx-iossimulator-g++/qmake.conf
deleted file mode 100644
index 99848be410..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-g++/qmake.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# qmake configuration for ios-simulator-g++
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/g++-macx.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/arch.conf)
-include(../../common/ios/g++.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check (g++ was discontinued at version 4.2, but user may have added it themselves)
-lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.3 or later")
-
-# iOS build tools
-QMAKE_CC = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2
-QMAKE_CXX = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2
-QMAKE_FIX_RPATH = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the g++ 4.2 compiler")
-
-load(qt_config)
diff --git a/mkspecs/unsupported/macx-iossimulator-g++/qplatformdefs.h b/mkspecs/unsupported/macx-iossimulator-g++/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-g++/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iossimulator-llvm-legacy/qmake.conf b/mkspecs/unsupported/macx-iossimulator-llvm-legacy/qmake.conf
deleted file mode 100644
index 95d530cc18..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-llvm-legacy/qmake.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# qmake configuration for ios-simulator-llvm
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/llvm.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/arch.conf)
-include(../../common/ios/llvm.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check
-!lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.2.x or earlier")
-
-# iOS build tools
-QMAKE_CC = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2
-QMAKE_CXX = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2
-QMAKE_FIX_RPATH = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the llvm-g++ 4.2 compiler")
-
-load(qt_config)
diff --git a/mkspecs/unsupported/macx-iossimulator-llvm-legacy/qplatformdefs.h b/mkspecs/unsupported/macx-iossimulator-llvm-legacy/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-llvm-legacy/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/macx-iossimulator-llvm/qmake.conf b/mkspecs/unsupported/macx-iossimulator-llvm/qmake.conf
deleted file mode 100644
index 7e3d4b5710..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-llvm/qmake.conf
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# qmake configuration for ios-simulator-llvm
-#
-# Depends on:
-#
-# QMAKE_IOS_XCODE_VERSION - set in mkspecs/common/ios/versions.conf
-#
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-ios.conf)
-include(../../common/llvm.conf)
-include(../../common/ios.conf)
-include(../../common/ios/versions.conf)
-include(../../common/ios/arch.conf)
-include(../../common/ios/llvm.conf)
-include(../../common/ios/qmake.conf)
-
-# Version check
-lessThan(QMAKE_IOS_XCODE_VERSION, "4.3"): error("This mkspec requires Xcode 4.3 or later")
-
-# iOS build tools
-QMAKE_CC = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2
-QMAKE_CXX = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2
-QMAKE_FIX_RPATH = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/install_name_tool -id
-QMAKE_AR = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar cq
-QMAKE_RANLIB = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ranlib -s
-QMAKE_LINK = $$QMAKE_CXX
-QMAKE_LINK_SHLIB = $$QMAKE_CXX
-
-# Check that compiler is valid
-!exists($$QMAKE_CXX): error("The version of Xcode installed on this system does not include the llvm-g++ 4.2 compiler")
-
-load(qt_config)
diff --git a/mkspecs/unsupported/macx-iossimulator-llvm/qplatformdefs.h b/mkspecs/unsupported/macx-iossimulator-llvm/qplatformdefs.h
deleted file mode 100644
index 5f80a17860..0000000000
--- a/mkspecs/unsupported/macx-iossimulator-llvm/qplatformdefs.h
+++ /dev/null
@@ -1,42 +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 qmake spec 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 "../../common/ios/qplatformdefs.h"
diff --git a/mkspecs/unsupported/qnx-X11-g++/qmake.conf b/mkspecs/unsupported/qnx-X11-g++/qmake.conf
index a5ee0b0e56..21b76df9b0 100644
--- a/mkspecs/unsupported/qnx-X11-g++/qmake.conf
+++ b/mkspecs/unsupported/qnx-X11-g++/qmake.conf
@@ -27,7 +27,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11 -lm -lsocket
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_LIBS_NETWORK = -lsocket
diff --git a/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf b/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf
index c5429aedf9..afb92485b3 100644
--- a/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf
+++ b/mkspecs/unsupported/vxworks-ppc-dcc/qmake.conf
@@ -76,7 +76,6 @@ QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_LIBS_NETWORK = # -lnetwrap # only needed if kernel is missing gethostbyname and friends
diff --git a/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf b/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf
index 4729daf3e7..323da44243 100644
--- a/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf
+++ b/mkspecs/unsupported/vxworks-simpentium-dcc/qmake.conf
@@ -76,7 +76,6 @@ QMAKE_LIBS_DYNLOAD =
QMAKE_LIBS_X11 = -lXext -lX11
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_OPENGL = -lGL
-QMAKE_LIBS_OPENGL_QT = -lGL
QMAKE_LIBS_THREAD =
QMAKE_LIBS_NETWORK = # -lnet # only needed if kernel is missing gethostbyname and friends
diff --git a/mkspecs/win32-g++/qplatformdefs.h b/mkspecs/win32-g++/qplatformdefs.h
index 736b69073a..4f339cbea6 100644
--- a/mkspecs/win32-g++/qplatformdefs.h
+++ b/mkspecs/win32-g++/qplatformdefs.h
@@ -65,16 +65,16 @@
#if !defined(_WIN32_WINNT) || (_WIN32_WINNT-0 < 0x0500)
typedef enum {
- NameUnknown = 0,
- NameFullyQualifiedDN = 1,
- NameSamCompatible = 2,
- NameDisplay = 3,
- NameUniqueId = 6,
- NameCanonical = 7,
- NameUserPrincipal = 8,
- NameCanonicalEx = 9,
- NameServicePrincipal = 10,
- NameDnsDomain = 12
+ NameUnknown = 0,
+ NameFullyQualifiedDN = 1,
+ NameSamCompatible = 2,
+ NameDisplay = 3,
+ NameUniqueId = 6,
+ NameCanonical = 7,
+ NameUserPrincipal = 8,
+ NameCanonicalEx = 9,
+ NameServicePrincipal = 10,
+ NameDnsDomain = 12
} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;
#endif
diff --git a/mkspecs/win32-icc/qmake.conf b/mkspecs/win32-icc/qmake.conf
index 9777a092f8..0b05873a8b 100644
--- a/mkspecs/win32-icc/qmake.conf
+++ b/mkspecs/win32-icc/qmake.conf
@@ -4,73 +4,72 @@
# Written for Intel C++
#
-MAKEFILE_GENERATOR = MSVC.NET
-QMAKE_PLATFORM = win32
-CONFIG += incremental flat debug_and_release debug_and_release_target
-DEFINES += UNICODE
-QMAKE_COMPILER_DEFINES += __INTEL_COMPILER WIN32
+MAKEFILE_GENERATOR = MSVC.NET
+QMAKE_PLATFORM = win32
+CONFIG += incremental flat debug_and_release debug_and_release_target
+DEFINES += UNICODE
+QMAKE_COMPILER_DEFINES += __INTEL_COMPILER WIN32
-QMAKE_COMPILER = msvc intel_icl # icl pretends to be msvc
+QMAKE_COMPILER = msvc intel_icl # icl pretends to be msvc
-QMAKE_CC = icl
-QMAKE_LEX = flex
-QMAKE_LEXFLAGS =
-QMAKE_YACC = byacc
-QMAKE_YACCFLAGS = -d
-QMAKE_CFLAGS = -nologo -Zm200 /Qprec /Qwd1744,1738
-QMAKE_CFLAGS_WARN_ON = -W3 /Qwd673
-QMAKE_CFLAGS_WARN_OFF = -W0 /Qwd673
-QMAKE_CFLAGS_RELEASE = -O2 -MD
+QMAKE_CC = icl
+QMAKE_LEX = flex
+QMAKE_LEXFLAGS =
+QMAKE_YACC = byacc
+QMAKE_YACCFLAGS = -d
+QMAKE_CFLAGS = -nologo -Zm200 /Qprec /Qwd1744,1738
+QMAKE_CFLAGS_WARN_ON = -W3 /Qwd673
+QMAKE_CFLAGS_WARN_OFF = -W0 /Qwd673
+QMAKE_CFLAGS_RELEASE = -O2 -MD
# Giving -O2 to debug builds should make icc 9.1 happy, but it might make debugging harder, so it might be reverted.
# This is actually a workaround for a bug in icc 9.1.
-QMAKE_CFLAGS_DEBUG = -Zi -MDd -O2
-QMAKE_CFLAGS_YACC =
+QMAKE_CFLAGS_DEBUG = -Zi -MDd -O2
+QMAKE_CFLAGS_YACC =
-QMAKE_CXX = $$QMAKE_CC
-QMAKE_CXXFLAGS = $$QMAKE_CFLAGS /Zc:forScope
-QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
-QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
-QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
-QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
-QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
-QMAKE_CXXFLAGS_STL_ON = -GX
-QMAKE_CXXFLAGS_STL_OFF =
-QMAKE_CXXFLAGS_RTTI_ON = -GR
+QMAKE_CXX = $$QMAKE_CC
+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS /Zc:forScope
+QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_STL_ON = -GX
+QMAKE_CXXFLAGS_STL_OFF =
+QMAKE_CXXFLAGS_RTTI_ON = -GR
QMAKE_CXXFLAGS_RTTI_OFF =
QMAKE_CXXFLAGS_EXCEPTIONS_ON = -GX
QMAKE_CXXFLAGS_EXCEPTIONS_OFF =
-QMAKE_INCDIR =
+QMAKE_INCDIR =
-QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
-QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
-QMAKE_RUN_CC_IMP_BATCH = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ @<<
-QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
-QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ $<
+QMAKE_RUN_CC_IMP_BATCH = $(CC) -c $(CFLAGS) $(INCPATH) -Fo$@ @<<
+QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$obj $src
+QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ $<
QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
-QMAKE_LINK = xilink
-QMAKE_LFLAGS = /NOLOGO
-QMAKE_LFLAGS_RELEASE =
-QMAKE_LFLAGS_DEBUG = /DEBUG
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:console
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:windows
+QMAKE_LINK = xilink
+QMAKE_LFLAGS = /NOLOGO
+QMAKE_LFLAGS_RELEASE =
+QMAKE_LFLAGS_DEBUG = /DEBUG
+QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:console
+QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:windows
QMAKE_LFLAGS_DLL = /DLL
-QMAKE_LFLAGS_QT_DLL = /BASE:0x39D00000
-QMAKE_LIBS =
+QMAKE_LIBS =
QMAKE_LIBS_CORE = kernel32.lib user32.lib shell32.lib uuid.lib ole32.lib advapi32.lib ws2_32.lib
QMAKE_LIBS_GUI = gdi32.lib comdlg32.lib oleaut32.lib imm32.lib winmm.lib ws2_32.lib ole32.lib user32.lib advapi32.lib
QMAKE_LIBS_NETWORK = ws2_32.lib
QMAKE_LIBS_OPENGL = glu32.lib opengl32.lib gdi32.lib user32.lib delayimp.lib
QMAKE_LIBS_COMPAT = advapi32.lib shell32.lib comdlg32.lib user32.lib gdi32.lib ws2_32.lib
-QMAKE_LIBS_QT_ENTRY = -lqtmain
+QMAKE_LIBS_QT_ENTRY = -lqtmain
-QMAKE_IDL = midl
-QMAKE_LIB = xilib /NOLOGO
-QMAKE_RC = rc
+QMAKE_IDL = midl
+QMAKE_LIB = xilib /NOLOGO
+QMAKE_RC = rc
include(../common/shell-win32.conf)
-DSP_EXTENSION = .dsp
+DSP_EXTENSION = .dsp
load(qt_config)
diff --git a/mkspecs/wince50standard-x86-msvc2005/qmake.conf b/mkspecs/wince50standard-x86-msvc2005/qmake.conf
index 2fa7556a29..d16d1f0f5b 100644
--- a/mkspecs/wince50standard-x86-msvc2005/qmake.conf
+++ b/mkspecs/wince50standard-x86-msvc2005/qmake.conf
@@ -11,7 +11,7 @@ CE_ARCH = x86
DEFINES += STANDARDSHELL_UI_MODEL _WIN32_WCE=0x500 $$CE_ARCH _X86_ _M_IX86 Q_OS_WINCE_STD QT_NO_PRINTER QT_NO_PRINTDIALOG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86 /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86
+QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86
QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:X86 /DLL /SAFESEH:NO
QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
QMAKE_LIBFLAGS_RELEASE = /LTCG
diff --git a/mkspecs/wince60standard-armv4i-msvc2005/qmake.conf b/mkspecs/wince60standard-armv4i-msvc2005/qmake.conf
index 3bb18af3c2..2fe971b4f4 100644
--- a/mkspecs/wince60standard-armv4i-msvc2005/qmake.conf
+++ b/mkspecs/wince60standard-armv4i-msvc2005/qmake.conf
@@ -20,8 +20,8 @@ QMAKE_LIBS = corelibc.lib coredll.lib
QMAKE_LIBS_CORE = libcmt.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
QMAKE_LIBS_GUI = ceshell.lib ole32.lib $$QMAKE_LIBS_CORE
QMAKE_LIBS_NETWORK = ws2.lib $$QMAKE_LIBS_GUI
-QMAKE_LIBS_OPENGL =
-QMAKE_LIBS_COMPAT =
+QMAKE_LIBS_OPENGL =
+QMAKE_LIBS_COMPAT =
QMAKE_RC = rc /DUNDER_CE=600 /D_WIN32_WCE=0x600
diff --git a/mkspecs/wincewm50pocket-msvc2005/qmake.conf b/mkspecs/wincewm50pocket-msvc2005/qmake.conf
index 676be5ac2a..657b68b616 100644
--- a/mkspecs/wincewm50pocket-msvc2005/qmake.conf
+++ b/mkspecs/wincewm50pocket-msvc2005/qmake.conf
@@ -5,7 +5,7 @@
#
include(../common/wince/qmake.conf)
-CE_SDK = Windows Mobile 5.0 Pocket PC SDK
+CE_SDK = Windows Mobile 5.0 Pocket PC SDK
CE_ARCH = ARMV4I
DEFINES += _WIN32_WCE=0x501 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_WM QT_NO_PRINTER QT_NO_PRINTDIALOG
diff --git a/mkspecs/wincewm50smart-msvc2005/qmake.conf b/mkspecs/wincewm50smart-msvc2005/qmake.conf
index c0f09cc0bb..36e2fcdf37 100644
--- a/mkspecs/wincewm50smart-msvc2005/qmake.conf
+++ b/mkspecs/wincewm50smart-msvc2005/qmake.conf
@@ -5,13 +5,13 @@
#
include(../common/wince/qmake.conf)
-CE_SDK = Windows Mobile 5.0 Smartphone SDK
+CE_SDK = Windows Mobile 5.0 Smartphone SDK
CE_ARCH = ARMV4I
DEFINES += SMARTPHONE2003_UI_MODEL _WIN32_WCE=0x501 $$CE_ARCH _ARMV4I_ armv4i _ARM_ ARM _M_ARM ARM __arm__ Q_OS_WINCE_WM QT_NO_PRINTER QT_NO_PRINTDIALOG QT_KEYPAD_NAVIGATION
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB
+QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB
QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /DLL
QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
QMAKE_LIBFLAGS_RELEASE = /LTCG
diff --git a/mkspecs/wincewm60professional-msvc2005/qmake.conf b/mkspecs/wincewm60professional-msvc2005/qmake.conf
index 78c5f0187a..5528db3afd 100644
--- a/mkspecs/wincewm60professional-msvc2005/qmake.conf
+++ b/mkspecs/wincewm60professional-msvc2005/qmake.conf
@@ -1,13 +1,13 @@
include(../wincewm50pocket-msvc2005/qmake.conf)
-CE_SDK = Windows Mobile 6 Professional SDK
-CE_ARCH = ARMV4I
+CE_SDK = Windows Mobile 6 Professional SDK
+CE_ARCH = ARMV4I
DEFINES -= _WIN32_WCE=0x501
DEFINES += _WIN32_WCE=0x502
-QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /ENTRY:mainACRTStartup
-QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB
+QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /ENTRY:mainACRTStartup
+QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB
QMAKE_LFLAGS_DLL = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /DLL
QMAKE_LIBFLAGS = $$QMAKE_LFLAGS_WINDOWS
diff --git a/mkspecs/wincewm60standard-msvc2005/qmake.conf b/mkspecs/wincewm60standard-msvc2005/qmake.conf
index 15cac422bc..c80339047b 100644
--- a/mkspecs/wincewm60standard-msvc2005/qmake.conf
+++ b/mkspecs/wincewm60standard-msvc2005/qmake.conf
@@ -1,6 +1,6 @@
include(../wincewm50smart-msvc2005/qmake.conf)
-CE_SDK = Windows Mobile 6 Standard SDK
+CE_SDK = Windows Mobile 6 Standard SDK
CE_ARCH = ARMV4I
DEFINES -= _WIN32_WCE=0x501
@@ -8,7 +8,7 @@ DEFINES += _WIN32_WCE=0x502
# Windows Mobile 6 Standard edition defines
# GWES_ICONCURS=1 although there is no cursor support
-
+
DEFINES += QT_NO_CURSOR
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:WINDOWSCE,5.02 /MACHINE:THUMB /ENTRY:mainACRTStartup
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index c8ac221293..7293f4c869 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -1,11 +1,3 @@
-SOURCE_PATH = @SOURCE_PATH@
-BUILD_PATH = @BUILD_PATH@
-QT_VERSION = @QT_VERSION@
-QTOBJS = @QMAKE_QTOBJS@
-QTSRCS = @QMAKE_QTSRCS@
-QMAKESPEC = @QMAKESPEC@
-LFLAGS = @QMAKE_LFLAGS@
-
QMKSRC = $(SOURCE_PATH)/qmake
QMKLIBSRC = $(QMKSRC)/library
QMKGENSRC = $(QMKSRC)/generators
@@ -22,18 +14,14 @@ OBJS=project.o option.o property.o main.o ioutils.o proitems.o \
#qt code
QOBJS=qtextcodec.o qutfcodec.o qstring.o qstringbuilder.o qtextstream.o qiodevice.o qmalloc.o qglobal.o \
qarraydata.o qbytearray.o qbytearraymatcher.o qdatastream.o qbuffer.o qlist.o qfiledevice.o qfile.o \
- qfilesystementry.o qfilesystemengine_unix.o qfilesystemengine.o qfilesystemiterator_unix.o \
- qfsfileengine_unix.o qfsfileengine.o \
- qfsfileengine_iterator.o qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o \
- qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o qtemporaryfile.o \
- qmap.o qmetatype.o qsettings.o qsystemerror.o qlibraryinfo.o qvariant.o qvsnprintf.o \
- qlocale.o qlocale_tools.o qlocale_unix.o qlinkedlist.o qnumeric.o qcryptographichash.o \
- qxmlstream.o qxmlutils.o qlogging.o \
+ qfilesystementry.o qfilesystemengine.o qfsfileengine.o qfsfileengine_iterator.o qregexp.o qvector.o \
+ qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o qfileinfo.o qdatetime.o qstringlist.o \
+ qabstractfileengine.o qtemporaryfile.o qmap.o qmetatype.o qsettings.o qsystemerror.o qlibraryinfo.o \
+ qvariant.o qvsnprintf.o qlocale.o qlocale_tools.o qlinkedlist.o qnumeric.o \
+ qcryptographichash.o qxmlstream.o qxmlutils.o qlogging.o \
$(QTOBJS)
-
-
#all sources, used for the depend target
DEPEND_SRC = \
$(QMKSRC)/main.cpp $(QMKSRC)/project.cpp $(QMKSRC)/option.cpp $(QMKSRC)/property.cpp \
@@ -58,10 +46,15 @@ DEPEND_SRC = \
$(SOURCE_PATH)/src/corelib/tools/qarraydata.cpp $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp\
$(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp \
$(SOURCE_PATH)/src/corelib/io/qdatastream.cpp $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp \
- $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp \
- $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_mac.cpp \
- $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp \
- $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp \
+ $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp \
$(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp \
$(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp $(SOURCE_PATH)/src/corelib/tools/qlist.cpp \
$(SOURCE_PATH)/src/corelib/tools/qvector.cpp $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp \
@@ -74,6 +67,7 @@ DEPEND_SRC = \
$(SOURCE_PATH)/src/corelib/tools/qlocale.cpp \
$(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp \
$(SOURCE_PATH)/src/corelib/tools/qlocale_unix.cpp \
+ $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp \
$(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp \
$(SOURCE_PATH)/src/corelib/tools/qhash.cpp $(SOURCE_PATH)/src/corelib/kernel/qcore_mac.cpp \
$(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp \
@@ -84,9 +78,11 @@ DEPEND_SRC = \
$(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp \
$(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp \
$(SOURCE_PATH)/src/corelib/global/qlogging.cpp \
+ $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp \
+ $(SOURCE_PATH)/tools/shared/windows/registry.cpp \
$(QTSRCS)
-CPPFLAGS = -g $(OPENSOURCE_CXXFLAGS) \
+CPPFLAGS = -g $(EXTRA_CPPFLAGS) \
-I$(QMKSRC) -I$(QMKLIBSRC) -I$(QMKSRC)/generators -I$(QMKSRC)/generators/unix -I$(QMKSRC)/generators/win32 \
-I$(QMKSRC)/generators/mac -I$(QMKSRC)/generators/integrity \
-I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore \
@@ -98,19 +94,23 @@ CPPFLAGS = -g $(OPENSOURCE_CXXFLAGS) \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \
-DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM
-CXXFLAGS = @QMAKE_CXXFLAGS@ $(CPPFLAGS)
+CXXFLAGS = $(EXTRA_CXXFLAGS) $(CPPFLAGS)
-first all: $(BUILD_PATH)/bin/qmake
-qmake: $(BUILD_PATH)/bin/qmake
+first all: $(BUILD_PATH)/bin/qmake$(EXEEXT)
+qmake: $(BUILD_PATH)/bin/qmake$(EXEEXT)
-$(BUILD_PATH)/bin/qmake: $(OBJS) $(QOBJS)
+$(BUILD_PATH)/bin/qmake$(EXEEXT): $(OBJS) $(QOBJS)
$(CXX) -o "$@" $(OBJS) $(QOBJS) $(LFLAGS)
+Makefile: $(SOURCE_PATH)/qmake/Makefile.unix
+ @echo "Out of date, please rerun configure"
+
clean::
- rm -f $(OBJS) $(QOBJS)
+ $(RM_F) $(OBJS) $(QOBJS)
distclean:: clean
- rm -rf $(BUILD_PATH)/bin/qmake .deps
+ $(RM_RF) .deps
+ $(RM_F) $(BUILD_PATH)/bin/qmake$(EXEEXT)
depend:
makedepend -D__MAKEDEPEND__ $(CPPFLAGS) $(DEPEND_SRC)
@@ -222,6 +222,9 @@ qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp
qsettings_mac.o: $(SOURCE_PATH)/src/corelib/io/qsettings_mac.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings_mac.cpp
+qsettings_win.o: $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp
+
qiodevice.o: $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp
@@ -270,6 +273,9 @@ qlocale_tools.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp
qlocale_unix.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_unix.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_unix.cpp
+qlocale_win.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp
+
qdatastream.o: $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp
@@ -294,12 +300,15 @@ qfilesystemengine.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp
qfilesystemengine_unix.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_unix.cpp
-qfilesystemengine_mac.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_mac.cpp
- $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_mac.cpp
+qfilesystemengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp
qfilesystemiterator_unix.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_unix.cpp
+qfilesystemiterator_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp
+
qfsfileengine.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp
@@ -309,6 +318,9 @@ qfsfileengine_iterator.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.c
qfsfileengine_unix.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_unix.cpp
+qfsfileengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp
+
qabstractfileengine.o: $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp
@@ -363,4 +375,10 @@ qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp
qlogging.o: $(SOURCE_PATH)/src/corelib/global/qlogging.cpp
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlogging.cpp
+qsystemlibrary.o: $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp
+
+registry.o: $(SOURCE_PATH)/tools/shared/windows/registry.cpp
+ $(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/tools/shared/windows/registry.cpp
+
# DO NOT DELETE THIS LINE -- make depend depends on it
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index 222acfa9a6..63cdf50563 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -42,7 +42,7 @@ CFLAGS_BARE = -c -Fo./ \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \
-DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
-DUNICODE
-CFLAGS = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch $(CFLAGS_BARE) $(CFLAGS)
+CFLAGS = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch $(CFLAGS_BARE) $(CFLAGS) $(EXTRA_CPPFLAGS)
CXXFLAGS_BARE = $(CFLAGS_BARE)
CXXFLAGS = $(CFLAGS)
@@ -66,10 +66,6 @@ OBJS = project.obj main.obj ioutils.obj proitems.obj \
msvc_objectmodel.obj msbuild_objectmodel.obj registry.obj \
gbuild.obj cesdkhandler.obj
-!IFDEF QMAKE_OPENSOURCE_EDITION
-CFLAGS = $(CFLAGS) -DQMAKE_OPENSOURCE_EDITION
-!ENDIF
-
#qt code
QTOBJS= \
qbitarray.obj \
diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++
deleted file mode 100644
index 565d5d2d51..0000000000
--- a/qmake/Makefile.win32-g++
+++ /dev/null
@@ -1,160 +0,0 @@
-ifeq "$(SOURCE_PATH)" ""
-SOURCE_PATH = ..
-endif
-
-ifeq "$(BUILD_PATH)" ""
-BUILD_PATH = ..
-endif
-
-CORESRC = $(SOURCE_PATH)/src/corelib
-TOOLSRC = $(SOURCE_PATH)/tools
-QMKSRC = $(SOURCE_PATH)/qmake
-QMKLIBSRC = $(QMKSRC)/library
-
-# SHELL is the full path of sh.exe, unless
-# 1) it is found in the current directory
-# 2) it is not found at all
-# 3) it is overridden on the command line with an existing file
-# ... otherwise it is always sh.exe. Specifically, SHELL from the
-# environment has no effect.
-#
-# This check will fail if SHELL is explicitly set to a not
-# sh-compatible shell. This is not a problem, because configure.exe
-# will not do that.
-ifeq ($(SHELL), sh.exe)
- ifeq ($(wildcard $(CURDIR)/sh.exe), )
- SH = 0
- else
- SH = 1
- endif
-else
- SH = 1
-endif
-
-ifeq ($(SH), 1)
- COPY = cp
- DEL = rm -f
-else
- COPY = copy
- DEL = del /f
-endif
-
-#
-# specific stuff for mingw g++ make
-#
-CXX = g++
-CFLAGS = -c -o$@ -O \
- -I$(QMKSRC) -I$(QMKLIBSRC) -I$(QMKSRC)/generators -I$(QMKSRC)/generators/unix -I$(QMKSRC)/generators/win32 -I$(QMKSRC)/generators/mac -I$(QMKSRC)/generators/integrity \
- -I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \
- -I$(BUILD_PATH)/src/corelib/global -DHAVE_QCONFIG_CPP \
- -I$(SOURCE_PATH)/mkspecs/win32-g++ \
- -I$(SOURCE_PATH)/tools/shared \
- -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DPROEVALUATOR_FULL -DPROEVALUATOR_DEBUG \
- -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_COMPRESS \
- -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
- -DUNICODE
-CXXFLAGS = $(CFLAGS)
-LFLAGS = -static -s
-LIBS = -lole32 -luuid -ladvapi32 -lkernel32
-LINKQMAKE = g++ $(LFLAGS) -o qmake.exe $(OBJS) $(QTOBJS) $(LIBS)
-ADDCLEAN =
-
-
-#qmake code
-OBJS = project.o main.o ioutils.o proitems.o \
- qmakeglobals.o qmakeparser.o qmakeevaluator.o qmakebuiltins.o \
- makefile.o unixmake.o unixmake2.o mingw_make.o \
- option.o winmakefile.o projectgenerator.o property.o meta.o \
- makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o \
- msvc_nmake.o msvc_vcproj.o msvc_vcxproj.o \
- msvc_objectmodel.o msbuild_objectmodel.o registry.o gbuild.o \
- cesdkhandler.o
-
-ifdef QMAKE_OPENSOURCE_EDITION
-CFLAGS += -DQMAKE_OPENSOURCE_EDITION
-endif
-
-#qt code
-QTOBJS= \
- qbitarray.o \
- qbuffer.o \
- qarraydata.o \
- qbytearray.o \
- qcryptographichash.o \
- qvsnprintf.o \
- qbytearraymatcher.o \
- qconfig.o \
- qdatetime.o \
- qdir.o \
- qdiriterator.o \
- qfiledevice.o \
- qfile.o \
- qtemporaryfile.o \
- qfileinfo.o \
- qabstractfileengine.o \
- qfilesystementry.o \
- qfilesystemengine.o \
- qfilesystemengine_win.o \
- qfilesystemiterator_win.o \
- qfsfileengine.o \
- qfsfileengine_iterator.o \
- qfsfileengine_win.o \
- qglobal.o \
- qhash.o \
- qiodevice.o \
- qlibraryinfo.o \
- qlist.o \
- qlinkedlist.o \
- qlocale.o \
- qlocale_tools.o \
- qlocale_win.o \
- qmalloc.o \
- qmap.o \
- qregexp.o \
- qtextcodec.o \
- qutfcodec.o \
- qstring.o \
- qstringlist.o \
- qstringbuilder.o \
- qsystemerror.o \
- qsystemlibrary.o \
- qtextstream.o \
- quuid.o \
- qvector.o \
- qsettings.o \
- qsettings_win.o \
- qvariant.o \
- qmetatype.o \
- qxmlstream.o \
- qxmlutils.o \
- qnumeric.o \
- qlogging.o
-
-
-qmake.exe: $(OBJS) $(QTOBJS)
- $(LINKQMAKE)
- -$(COPY) qmake.exe $(BUILD_PATH)\bin\qmake.exe
-
-Makefile: $(SOURCE_PATH)/qmake/Makefile.win32-g++
- @echo "Out of date, please rerun configure"
-
-clean::
- -$(DEL) $(OBJS) $(QTOBJS) $(ADDCLEAN)
-
-distclean:: clean
- -$(DEL) qmake.exe
-
-.c.o:
- $(CXX) $(CFLAGS) $<
-
-.cpp.o:
- $(CXX) $(CXXFLAGS) $<
-
-QTVPATH = $(TOOLSRC)/shared/windows:$(CORESRC)/global:$(CORESRC)/kernel:$(CORESRC)/tools:$(CORESRC)/codecs:$(CORESRC)/io:$(CORESRC)/xml:$(CORESRC)/plugin:$(BUILD_PATH)/src/corelib/global
-VPATH = $(QMKSRC):$(QMKLIBSRC):$(QMKSRC)/generators:$(QMKSRC)/generators/unix:$(QMKSRC)/generators/mac:$(QMKSRC)/generators/win32:$(QMKSRC)/generators/integrity:$(QTVPATH)
-
-project.o: $(QMKSRC)/project.h $(QMKSRC)/option.h
-meta.o: $(QMKSRC)/project.h $(QMKSRC)/option.h
-main.o: $(QMKSRC)/project.h
-option.o: $(QMKSRC)/option.h
-property.o: $(QMKSRC)/project.h $(QMKSRC)/option.h
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index c5b2c56f8f..6b23cbe42e 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -46,6 +46,7 @@
#include <qregexp.h>
#include <qcryptographichash.h>
#include <qdebug.h>
+#include <qstring.h>
#include <stdlib.h>
#include <time.h>
#ifdef Q_OS_UNIX
@@ -222,7 +223,6 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
<< "\t\t\t" << writeSettings("lastKnownFileType", "wrapper.pb-project") << ";" << "\n"
<< "\t\t\t" << writeSettings("name", escapeFilePath(tmp_proj.first("TARGET") + projectSuffix())) << ";" << "\n"
<< "\t\t\t" << writeSettings("path", pbxproj) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "0", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "<absolute>") << ";" << "\n"
<< "\t\t" << "};" << "\n";
//WRAPPER
@@ -235,8 +235,7 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
t << "\t\t\t" << writeSettings("fileType", "compiled.mach-o.dylib") << ";" << "\n"
<< "\t\t\t" << writeSettings("path", tmp_proj.first("TARGET") + ".dylib") << ";" << "\n";
}
- t << "\t\t\t" << writeSettings("refType", "3", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("remoteRef", keyFor(pbxproj + "_WRAPPERREF")) << ";" << "\n"
+ t << "\t\t\t" << writeSettings("remoteRef", keyFor(pbxproj + "_WRAPPERREF")) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "BUILT_PRODUCTS_DIR", SettingsNoQuote) << ";" << "\n"
<< "\t\t" << "};" << "\n";
t << "\t\t" << keyFor(pbxproj + "_WRAPPERREF") << " = {" << "\n"
@@ -252,7 +251,6 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
<< "\t\t\t" << writeSettings("children", project->values(ProKey(pbxproj + "_WRAPPER")), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", "Products") << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "<group>") << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
@@ -291,14 +289,13 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
<< "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("children", grp_it.value(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", escapeFilePath(grp_it.key().section(Option::dir_sep, -1))) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
//DUMP EVERYTHING THAT TIES THE ABOVE TOGETHER
- //BUILDSTYLE
- QString active_buildstyle;
+ //BUILDCONFIGURATIONS
+ QString defaultConfig;
for(int as_release = 0; as_release < 2; as_release++)
{
QMap<QString, QString> settings;
@@ -320,6 +317,8 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
}
QString name = (as_release ? "Release" : "Debug");
+ if (project->isActiveConfig("debug") != (bool)as_release)
+ defaultConfig = name;
QString key = keyFor("QMAKE_SUBDIR_PBX_BUILDCONFIG_" + name);
project->values("QMAKE_SUBDIR_PBX_BUILDCONFIGS").append(key);
t << "\t\t" << key << " = {" << "\n"
@@ -330,26 +329,12 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
t << "\t\t\t" << "};" << "\n"
<< "\t\t\t" << writeSettings("name", name) << ";" << "\n"
<< "\t\t" << "};" << "\n";
-
- key = keyFor("QMAKE_SUBDIR_PBX_BUILDSTYLE_" + name);
- project->values("QMAKE_SUBDIR_PBX_BUILDSTYLES").append(key);
- if (project->isActiveConfig("debug") != (bool)as_release)
- active_buildstyle = name;
- t << "\t\t" << key << " = {" << "\n"
- << "\t\t\t" << writeSettings("buildRules", ProStringList(), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << "buildSettings = {" << "\n";
- for(QMap<QString, QString>::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it)
- t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";\n";
- t << "\t\t\t" << "};" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXBuildStyle", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("name", name) << ";" << "\n"
- << "\t\t" << "};" << "\n";
}
t << "\t\t" << keyFor("QMAKE_SUBDIR_PBX_BUILDCONFIG_LIST") << " = {" << "\n"
<< "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("buildConfigurations", project->values("QMAKE_SUBDIR_PBX_BUILDCONFIGS"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("defaultConfigurationIsName", active_buildstyle) << ";" << "\n"
+ << "\t\t\t" << writeSettings("defaultConfigurationName", defaultConfig, SettingsNoQuote) << ";" << "\n"
<< "\t\t" << "};" << "\n";
#ifdef GENERATE_AGGREGRATE_SUBDIR
@@ -376,7 +361,6 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
t << "\t\t" << keyFor("QMAKE_SUBDIR_PBX_ROOT_GROUP") << " = {" << "\n"
<< "\t\t\t" << writeSettings("children", project->values("QMAKE_SUBDIR_PBX_GROUPS"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "<group>") << ";" << "\n"
<< "\t\t" << "};" << "\n";
@@ -451,18 +435,17 @@ public:
ProjectBuilderSources::ProjectBuilderSources(const QString &k, bool b,
const QString &g, const QString &c, bool o) : buildable(b), object_output(o), key(k), group(g), compiler(c)
{
- if(group.isNull()) {
- if(k == "SOURCES")
- group = "Sources";
- else if(k == "HEADERS")
- group = "Headers";
- else if(k == "QMAKE_INTERNAL_INCLUDED_FILES")
- group = "Sources [qmake]";
- else if(k == "GENERATED_SOURCES" || k == "GENERATED_FILES")
- group = "Temporary Sources";
- else
- fprintf(stderr, "No group available for %s!\n", k.toLatin1().constData());
- }
+ // Override group name for a few common keys
+ if (k == "SOURCES" || k == "OBJECTIVE_SOURCES" || k == "HEADERS")
+ group = "Sources";
+ else if (k == "QMAKE_INTERNAL_INCLUDED_FILES")
+ group = "Supporting Files";
+ else if (k == "GENERATED_SOURCES" || k == "GENERATED_FILES")
+ group = "Generated Sources";
+ else if (k == "RESOURCES")
+ group = "Resources";
+ else if (group.isNull())
+ group = QString("Sources [") + c + "]";
}
QStringList
@@ -470,7 +453,6 @@ ProjectBuilderSources::files(QMakeProject *project) const
{
QStringList ret = project->values(ProKey(key)).toQStringList();
if(key == "QMAKE_INTERNAL_INCLUDED_FILES") {
- ret.prepend(project->projectFile());
for(int i = 0; i < ret.size(); ++i) {
QStringList newret;
if(!ret.at(i).endsWith(Option::prf_ext))
@@ -483,10 +465,48 @@ ProjectBuilderSources::files(QMakeProject *project) const
return ret;
}
+static QString xcodeFiletypeForFilename(const QString &filename)
+{
+ foreach (const QString &ext, Option::cpp_ext) {
+ if (filename.endsWith(ext))
+ return QStringLiteral("sourcecode.cpp.cpp");
+ }
+
+ foreach (const QString &ext, Option::c_ext) {
+ if (filename.endsWith(ext))
+ return QStringLiteral("sourcecode.c.c");
+ }
+
+ foreach (const QString &ext, Option::h_ext) {
+ if (filename.endsWith(ext))
+ return "sourcecode.c.h";
+ }
+
+ if (filename.endsWith(QStringLiteral(".mm")))
+ return QStringLiteral("sourcecode.cpp.objcpp");
+ if (filename.endsWith(QStringLiteral(".m")))
+ return QStringLiteral("sourcecode.c.objc");
+ if (filename.endsWith(QStringLiteral(".framework")))
+ return QStringLiteral("wrapper.framework");
+ if (filename.endsWith(QStringLiteral(".a")))
+ return QStringLiteral("archive.ar");
+ if (filename.endsWith(QStringLiteral(".pro")) || filename.endsWith(QStringLiteral(".qrc")))
+ return QStringLiteral("text");
+
+ return QString();
+}
bool
ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
{
+ // The code in this function assumes that the current directory matches
+ // the output directory, which is not actually the case when we are called
+ // from the generic generator code. Instead of changing every single
+ // assumption and fileFixify we cheat by moving into the output directory
+ // for the duration of this function.
+ QString input_dir = qmake_getpwd();
+ qmake_setpwd(Option::output_dir);
+
ProStringList tmp;
bool did_preprocess = false;
@@ -508,6 +528,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
QFile mkf(mkfile);
if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) {
writingUnixMakefileGenerator = true;
+ qmake_setpwd(input_dir); // Makefile generation assumes input_dir as pwd
debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData());
QTextStream mkt(&mkf);
writeHeader(mkt);
@@ -516,6 +537,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
mkt.flush();
mkf.close();
writingUnixMakefileGenerator = false;
+ qmake_setpwd(Option::output_dir);
}
QString phase_key = keyFor("QMAKE_PBX_MAKEQMAKE_BUILDPHASE");
mkfile = fileFixify(mkfile, qmake_getpwd());
@@ -523,15 +545,18 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
t << "\t\t" << phase_key << " = {" << "\n"
<< "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << writeSettings("generatedFileNames", ProStringList(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", "Qt Qmake") << ";" << "\n"
- << "\t\t\t" << writeSettings("neededFileNames", ProStringList(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";" << "\n"
<< "\t\t\t" << writeSettings("shellScript", "make -C " + IoUtils::shellQuoteUnix(qmake_getpwd()) + " -f " + IoUtils::shellQuoteUnix(mkfile)) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
+ // FIXME: Move all file resolving logic out of ProjectBuilderSources::files(), as it
+ // doesn't have access to any of the information it needs to resolve relative paths.
+ project->values("QMAKE_INTERNAL_INCLUDED_FILES").prepend(fileFixify(project->projectFile(), qmake_getpwd(), input_dir));
+
//DUMP SOURCES
QMap<QString, ProStringList> groups;
QList<ProjectBuilderSources> sources;
@@ -545,14 +570,13 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) {
if (project->isEmpty(ProKey(*it + ".output")))
continue;
- ProString name = *it;
- const ProKey nkey(*it + ".name");
- if (!project->isEmpty(nkey))
- name = project->first(nkey);
- const ProStringList &inputs = project->values(ProKey(*it + ".input"));
- for(int input = 0; input < inputs.size(); ++input) {
- if (project->isEmpty(inputs.at(input).toKey()))
+ ProStringList &inputs = project->values(ProKey(*it + ".input"));
+ int input = 0;
+ while (input < inputs.size()) {
+ if (project->isEmpty(inputs.at(input).toKey())) {
+ ++input;
continue;
+ }
bool duplicate = false;
bool isObj = project->values(ProKey(*it + ".CONFIG")).indexOf("no_link") == -1;
if (!isObj) {
@@ -572,8 +596,15 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
}
}
sources.append(ProjectBuilderSources(inputs.at(input).toQString(), true,
- QString("Sources [") + name + "]", (*it).toQString(), isObj));
+ QString(), (*it).toQString(), isObj));
+
+ if (isObj) {
+ inputs.removeAt(input);
+ continue;
+ }
}
+
+ ++input;
}
}
}
@@ -618,30 +649,29 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
}
last_grp = new_grp;
}
+ if (groups[last_grp].contains(src_key))
+ continue;
groups[last_grp] += src_key;
in_root = false;
}
}
- if(in_root)
+ if (in_root) {
+ if (src_list.contains(src_key))
+ continue;
src_list.append(src_key);
+ }
//source reference
t << "\t\t" << src_key << " = {" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("name", escapeFilePath(name)) << ";" << "\n"
- << "\t\t\t" << writeSettings("path", escapeFilePath(file)) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", QString::number(reftypeForFile(file)), SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("sourceTree", sourceTreeForFile(file)) << ";" << "\n";
- QString filetype;
- for (QStringList::Iterator cppit = Option::cpp_ext.begin(); cppit != Option::cpp_ext.end(); ++cppit) {
- if (file.endsWith((*cppit))) {
- filetype = "sourcecode.cpp.cpp";
- break;
- }
- }
+ << "\t\t\t" << writeSettings("path", escapeFilePath(file)) << ";" << "\n";
+ if (name != file)
+ t << "\t\t\t" << writeSettings("name", escapeFilePath(name)) << ";" << "\n";
+ t << "\t\t\t" << writeSettings("sourceTree", sourceTreeForFile(file)) << ";" << "\n";
+ QString filetype = xcodeFiletypeForFilename(file);
if (!filetype.isNull())
t << "\t\t\t" << writeSettings("lastKnownFileType", filetype) << ";" << "\n";
t << "\t\t" << "};" << "\n";
- if(sources.at(source).isBuildable()) { //build reference
+ if (sources.at(source).isBuildable() && sources.at(source).isObjectOutput(file)) { //build reference
QString build_key = keyFor(file + ".BUILDABLE");
t << "\t\t" << build_key << " = {" << "\n"
<< "\t\t\t" << writeSettings("fileRef", src_key) << ";" << "\n"
@@ -650,8 +680,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t\t" << writeSettings("ATTRIBUTES", ProStringList(), SettingsAsList, 5) << ";" << "\n"
<< "\t\t\t" << "};" << "\n"
<< "\t\t" << "};" << "\n";
- if(sources.at(source).isObjectOutput(file))
- project->values("QMAKE_PBX_OBJ").append(build_key);
+ project->values("QMAKE_PBX_OBJ").append(build_key);
}
}
if(!src_list.isEmpty()) {
@@ -671,7 +700,6 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("children", grp_it.value(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", escapeFilePath(grp_it.key().section(Option::dir_sep, -1))) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
@@ -775,10 +803,9 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
t << "\t\t" << phase_key << " = {" << "\n"
<< "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << writeSettings("generatedFileNames", fixListForOutput("QMAKE_PBX_OBJ"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", "Qt Preprocessors") << ";" << "\n"
- << "\t\t\t" << writeSettings("neededFileNames", fixListForOutput("QMAKE_PBX_OBJ"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";" << "\n"
<< "\t\t\t" << writeSettings("shellScript", "make -C " + IoUtils::shellQuoteUnix(qmake_getpwd()) + " -f " + IoUtils::shellQuoteUnix(mkfile)) << ";" << "\n"
<< "\t\t" << "};" << "\n";
@@ -786,12 +813,13 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
//SOURCE BUILDPHASE
if(!project->isEmpty("QMAKE_PBX_OBJ")) {
- QString grp = "Build Sources", key = keyFor(grp);
+ QString grp = "Compile Sources", key = keyFor(grp);
project->values("QMAKE_PBX_BUILDPHASES").append(key);
t << "\t\t" << key << " = {" << "\n"
<< "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("files", fixListForOutput("QMAKE_PBX_OBJ"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXSourcesBuildPhase", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", grp) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
@@ -899,26 +927,29 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
libdirs += path;
}
library = fileFixify(library);
+ QString filetype = xcodeFiletypeForFilename(library);
QString key = keyFor(library);
- bool is_frmwrk = (library.endsWith(".framework"));
- t << "\t\t" << key << " = {" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("name", escapeFilePath(name)) << ";" << "\n"
- << "\t\t\t" << writeSettings("path", escapeFilePath(library)) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", QString::number(reftypeForFile(library)), SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("sourceTree", sourceTreeForFile(library)) << ";" << "\n";
- if (is_frmwrk)
- t << "\t\t\t" << writeSettings("lastKnownFileType", "wrapper.framework") << ";" << "\n";
- t << "\t\t" << "};" << "\n";
- project->values("QMAKE_PBX_LIBRARIES").append(key);
- QString build_key = keyFor(library + ".BUILDABLE");
- t << "\t\t" << build_key << " = {" << "\n"
- << "\t\t\t" << writeSettings("fileRef", key) << ";" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << "settings = {" << "\n"
- << "\t\t\t" << "};" << "\n"
- << "\t\t" << "};" << "\n";
- project->values("QMAKE_PBX_BUILD_LIBRARIES").append(build_key);
+ if (!project->values("QMAKE_PBX_LIBRARIES").contains(key)) {
+ bool is_frmwrk = (library.endsWith(".framework"));
+ t << "\t\t" << key << " = {" << "\n"
+ << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("name", escapeFilePath(name)) << ";" << "\n"
+ << "\t\t\t" << writeSettings("path", escapeFilePath(library)) << ";" << "\n"
+ << "\t\t\t" << writeSettings("refType", QString::number(reftypeForFile(library)), SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("sourceTree", sourceTreeForFile(library)) << ";" << "\n";
+ if (is_frmwrk)
+ t << "\t\t\t" << writeSettings("lastKnownFileType", "wrapper.framework") << ";" << "\n";
+ t << "\t\t" << "};" << "\n";
+ project->values("QMAKE_PBX_LIBRARIES").append(key);
+ QString build_key = keyFor(library + ".BUILDABLE");
+ t << "\t\t" << build_key << " = {" << "\n"
+ << "\t\t\t" << writeSettings("fileRef", key) << ";" << "\n"
+ << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << "settings = {" << "\n"
+ << "\t\t\t" << "};" << "\n"
+ << "\t\t" << "};" << "\n";
+ project->values("QMAKE_PBX_BUILD_LIBRARIES").append(build_key);
+ }
}
if(remove)
tmp.removeAt(x);
@@ -957,10 +988,9 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
t << "\t\t" << phase_key << " = {" << "\n"
<< "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("files", ProStringList(), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << writeSettings("generatedFileNames", ProStringList(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", "Qt Sublibs") << ";" << "\n"
- << "\t\t\t" << writeSettings("neededFileNames", ProStringList(), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("shellPath", "/bin/sh") << "\n"
<< "\t\t\t" << writeSettings("shellScript", "make -C " + IoUtils::shellQuoteUnix(qmake_getpwd()) + " -f " + IoUtils::shellQuoteUnix(mkfile)) << ";" << "\n"
<< "\t\t" << "};" << "\n";
@@ -969,42 +999,24 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
if(!project->isEmpty("QMAKE_PBX_LIBRARIES")) {
tmp = project->values("QMAKE_PBX_LIBRARIES");
if(!tmp.isEmpty()) {
- QString grp("External Frameworks and Libraries"), key = keyFor(grp);
+ QString grp("Frameworks"), key = keyFor(grp);
project->values("QMAKE_PBX_GROUPS").append(key);
t << "\t\t" << key << " = {" << "\n"
<< "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_LIBRARIES"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";" << "\n"
- << "\t\t\t" << writeSettings("path", ProStringList()) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
}
{
- QString grp("Frameworks & Libraries"), key = keyFor(grp);
+ QString grp("Link Binary With Libraries"), key = keyFor(grp);
project->values("QMAKE_PBX_BUILDPHASES").append(key);
t << "\t\t" << key << " = {" << "\n"
<< "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("files", project->values("QMAKE_PBX_BUILD_LIBRARIES"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXFrameworksBuildPhase", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";" << "\n"
- << "\t\t" << "};" << "\n";
- }
- if(project->isActiveConfig("app_bundle") && project->first("TEMPLATE") == "app") { //BUNDLE RESOURCES
- QString grp("Bundle Resources"), key = keyFor(grp);
- project->values("QMAKE_PBX_BUILDPHASES").append(key);
- t << "\t\t" << key << " = {" << "\n"
- << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << "files = (" << "\n";
- if(!project->isEmpty("ICON")) {
- ProString icon = project->first("ICON");
- if (icon.length() >= 2 && (icon.at(0) == '"' || icon.at(0) == '\'') && icon.endsWith(icon.at(0)))
- icon = icon.mid(1, icon.length()-2);
- t << "\t\t\t\t" << keyFor(icon + ".BUILDABLE") << ",\n";
- }
- t << "\t\t\t" << ");" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXResourcesBuildPhase", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
@@ -1026,78 +1038,96 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("shellScript", fixForOutput("cp -r $BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME " + escapeFilePath(destDir))) << ";" << "\n"
<< "\t\t" << "};\n";
}
- //BUNDLE_DATA BUILDPHASE (copy)
- if(!project->isEmpty("QMAKE_BUNDLE_DATA")) {
+ // Copy Bundle Resources
+ if (!project->isEmpty("QMAKE_BUNDLE_DATA")) {
ProStringList bundle_file_refs;
+ ProStringList bundle_resources_files;
+
+ bool useCopyResourcesPhase = project->isActiveConfig("app_bundle") && project->first("TEMPLATE") == "app";
+
//all bundle data
const ProStringList &bundle_data = project->values("QMAKE_BUNDLE_DATA");
for(int i = 0; i < bundle_data.count(); i++) {
- ProStringList pbx_files;
+ ProStringList bundle_files;
+ ProString path = project->first(ProKey(bundle_data[i] + ".path"));
//all files
const ProStringList &files = project->values(ProKey(bundle_data[i] + ".files"));
for(int file = 0; file < files.count(); file++) {
QString fn = files[file].toQString();
- QString file_ref_key = keyFor("QMAKE_PBX_BUNDLE_COPY_FILE_REF." + bundle_data[i] + "-" + fn);
+ QString file_ref_key = keyFor("QMAKE_PBX_BUNDLE_DATA_FILE_REF." + bundle_data[i] + "-" + fn);
bundle_file_refs += file_ref_key;
t << "\t\t" << file_ref_key << " = {" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("path", escapeFilePath(fn)) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", QString::number(reftypeForFile(fn)), SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", sourceTreeForFile(fn)) << ";" << "\n"
<< "\t\t" << "};" << "\n";
- QString copy_file_key = keyFor("QMAKE_PBX_BUNDLE_COPY_FILE." + bundle_data[i] + "-" + fn);
- pbx_files += copy_file_key;
- t << "\t\t" << copy_file_key << " = {\n"
+ QString file_key = keyFor("QMAKE_PBX_BUNDLE_DATA_FILE." + bundle_data[i] + "-" + fn);
+ bundle_files += file_key;
+ t << "\t\t" << file_key << " = {\n"
<< "\t\t\t" << writeSettings("fileRef", file_ref_key) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << "settings = {\n"
- << "\t\t\t" << "}" << ";" << "\n"
<< "\t\t" << "}" << ";" << "\n";
}
- //the phase
- QString phase_key = keyFor("QMAKE_PBX_BUNDLE_COPY." + bundle_data[i]);
- QString path;
- if (!project->isEmpty(ProKey(bundle_data[i] + ".version"))) {
- //###
+
+ if (!useCopyResourcesPhase || !path.isEmpty()) {
+ // The resource copy phase doesn't support paths, so we have to use
+ // a regular file copy phase (which doesn't optimize the resources).
+ QString phase_key = keyFor("QMAKE_PBX_BUNDLE_COPY." + bundle_data[i]);
+ if (!project->isEmpty(ProKey(bundle_data[i] + ".version"))) {
+ //###
+ }
+
+ project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key);
+ t << "\t\t" << phase_key << " = {\n"
+ << "\t\t\t" << writeSettings("name", "Copy '" + bundle_data[i] + "' Files to Bundle") << ";" << "\n"
+ << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("dstPath", escapeFilePath(path)) << ";" << "\n"
+ << "\t\t\t" << writeSettings("dstSubfolderSpec", "1", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("files", bundle_files, SettingsAsList, 4) << ";" << "\n"
+ << "\t\t\t" << writeSettings("isa", "PBXCopyFilesBuildPhase", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n"
+ << "\t\t" << "}" << ";" << "\n";
+ } else {
+ // Otherwise we leave it to the resource copy phase below
+ bundle_resources_files += bundle_files;
+ }
+ }
+
+ if (useCopyResourcesPhase) {
+ if (!project->isEmpty("ICON")) {
+ ProString icon = project->first("ICON");
+ if (icon.length() >= 2 && (icon.at(0) == '"' || icon.at(0) == '\'') && icon.endsWith(icon.at(0))) {
+ icon = icon.mid(1, icon.length() - 2);
+ bundle_resources_files += keyFor(icon + ".BUILDABLE");
+ }
}
- path += project->first(ProKey(bundle_data[i] + ".path"));
- project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key);
- t << "\t\t" << phase_key << " = {\n"
- << "\t\t\t" << writeSettings("name", "Bundle Copy [" + bundle_data[i] + "]") << ";" << "\n"
+
+ QString grp("Copy Bundle Resources"), key = keyFor(grp);
+ project->values("QMAKE_PBX_BUILDPHASES").append(key);
+ t << "\t\t" << key << " = {" << "\n"
<< "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("dstPath", escapeFilePath(path)) << ";" << "\n"
- << "\t\t\t" << writeSettings("dstSubfolderSpec", "1", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("files", pbx_files, SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXCopyFilesBuildPhase", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("files", bundle_resources_files, SettingsAsList, 4) << ";" << "\n"
+ << "\t\t\t" << writeSettings("isa", "PBXResourcesBuildPhase", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n"
- << "\t\t" << "}" << ";" << "\n";
+ << "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";" << "\n"
+ << "\t\t" << "};" << "\n";
}
- QString bundle_copy_key = keyFor("QMAKE_PBX_BUNDLE_COPY");
- project->values("QMAKE_PBX_GROUPS").append(bundle_copy_key);
- t << "\t\t" << bundle_copy_key << " = {" << "\n"
+
+ QString bundle_data_key = keyFor("QMAKE_PBX_BUNDLE_DATA");
+ project->values("QMAKE_PBX_GROUPS").append(bundle_data_key);
+ t << "\t\t" << bundle_data_key << " = {" << "\n"
<< "\t\t\t" << writeSettings("children", bundle_file_refs, SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("name", "Source [bundle data]") << ";" << "\n"
- << "\t\t\t" << writeSettings("path", ProStringList()) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("name", "Bundle Resources") << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
- //DUMP EVERYTHING THAT TIES THE ABOVE TOGETHER
- //ROOT_GROUP
- t << "\t\t" << keyFor("QMAKE_PBX_ROOT_GROUP") << " = {" << "\n"
- << "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_GROUPS"), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("name", escapeFilePath(project->first("QMAKE_ORIG_TARGET"))) << ";" << "\n"
- << "\t\t\t" << writeSettings("path", ProStringList()) << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";" << "\n"
- << "\t\t" << "};" << "\n";
//REFERENCE
project->values("QMAKE_PBX_PRODUCTS").append(keyFor(pbx_dir + "QMAKE_PBX_REFERENCE"));
t << "\t\t" << keyFor(pbx_dir + "QMAKE_PBX_REFERENCE") << " = {" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";" << "\n";
+ << "\t\t\t" << writeSettings("isa", "PBXFileReference", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("includeInIndex", "0", SettingsNoQuote) << ";" << "\n";
if(project->first("TEMPLATE") == "app") {
ProString targ = project->first("QMAKE_ORIG_TARGET");
if(project->isActiveConfig("bundle") && !project->isEmpty("QMAKE_BUNDLE_EXTENSION")) {
@@ -1112,7 +1142,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
targ += ".app";
t << "\t\t\t" << writeSettings("explicitFileType", "wrapper.application") << ";" << "\n";
} else {
- t << "\t\t\t" << writeSettings("explicitFileType", "wrapper.executable") << ";" << "\n";
+ t << "\t\t\t" << writeSettings("explicitFileType", "compiled.mach-o.executable") << ";" << "\n";
}
QString app = (!project->isEmpty("DESTDIR") ? project->first("DESTDIR") + project->first("QMAKE_ORIG_TARGET") :
qmake_getpwd()) + Option::dir_sep + targ;
@@ -1146,8 +1176,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
}
t << "\t\t\t" << writeSettings("path", escapeFilePath(lib)) << ";" << "\n";
}
- t << "\t\t\t" << writeSettings("refType", "3", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("sourceTree", "BUILT_PRODUCTS_DIR", SettingsNoQuote) << ";" << "\n"
+ t << "\t\t\t" << writeSettings("sourceTree", "BUILT_PRODUCTS_DIR", SettingsNoQuote) << ";" << "\n"
<< "\t\t" << "};" << "\n";
{ //Products group
QString grp("Products"), key = keyFor(grp);
@@ -1156,177 +1185,38 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_PRODUCTS"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("name", "Products") << ";" << "\n"
- << "\t\t\t" << writeSettings("refType", "4", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
+
+ //DUMP EVERYTHING THAT TIES THE ABOVE TOGETHER
+ //ROOT_GROUP
+ t << "\t\t" << keyFor("QMAKE_PBX_ROOT_GROUP") << " = {" << "\n"
+ << "\t\t\t" << writeSettings("children", project->values("QMAKE_PBX_GROUPS"), SettingsAsList, 4) << ";" << "\n"
+ << "\t\t\t" << writeSettings("isa", "PBXGroup", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("name", escapeFilePath(project->first("QMAKE_ORIG_TARGET"))) << ";" << "\n"
+ << "\t\t\t" << writeSettings("sourceTree", "<Group>") << ";" << "\n"
+ << "\t\t" << "};" << "\n";
+
//TARGET
QString target_key = keyFor(pbx_dir + "QMAKE_PBX_TARGET");
project->values("QMAKE_PBX_TARGETS").append(target_key);
t << "\t\t" << target_key << " = {" << "\n"
<< "\t\t\t" << writeSettings("buildPhases", project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES") + project->values("QMAKE_PBX_BUILDPHASES"),
- SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << "buildSettings = {" << "\n";
- ProString cCompiler = project->first("QMAKE_CC");
- if (!cCompiler.isEmpty()) {
- t << "\t\t\t\t" << writeSettings("CC", fixForOutput(findProgram(cCompiler))) << ";" << "\n";
- }
- cCompiler = project->first("QMAKE_CXX");
- if (!cCompiler.isEmpty()) {
- t << "\t\t\t\t" << writeSettings("CPLUSPLUS", fixForOutput(findProgram(cCompiler))) << ";" << "\n";
- }
-
- t << "\t\t\t\t" << writeSettings("LEXFLAGS", fixListForOutput("QMAKE_LEXFLAGS")) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("YACCFLAGS", fixListForOutput("QMAKE_YACCFLAGS")) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("OTHER_REZFLAGS", ProStringList()) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("SECTORDER_FLAGS", ProStringList()) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("WARNING_CFLAGS", ProStringList()) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("PREBINDING", ProStringList((project->isEmpty("QMAKE_DO_PREBINDING") ? "NO" : "YES")), SettingsNoQuote) << ";" << "\n";
- if((project->first("TEMPLATE") == "app" && project->isActiveConfig("app_bundle")) ||
- (project->first("TEMPLATE") == "lib" && !project->isActiveConfig("staticlib") &&
- project->isActiveConfig("lib_bundle"))) {
- QString plist = fileFixify(project->first("QMAKE_INFO_PLIST").toQString());
- if(plist.isEmpty())
- plist = specdir() + QDir::separator() + "Info.plist." + project->first("TEMPLATE");
- if(exists(plist)) {
- QFile plist_in_file(plist);
- if(plist_in_file.open(QIODevice::ReadOnly)) {
- QTextStream plist_in(&plist_in_file);
- QString plist_in_text = plist_in.readAll();
- plist_in_text = plist_in_text.replace("@ICON@",
- (project->isEmpty("ICON") ? QString("") : project->first("ICON").toQString().section(Option::dir_sep, -1)));
- if(project->first("TEMPLATE") == "app") {
- plist_in_text = plist_in_text.replace("@EXECUTABLE@", project->first("QMAKE_ORIG_TARGET").toQString());
- } else {
- plist_in_text = plist_in_text.replace("@LIBRARY@", project->first("QMAKE_ORIG_TARGET").toQString());
- }
- if (!project->values("VERSION").isEmpty()) {
- plist_in_text = plist_in_text.replace("@SHORT_VERSION@", project->first("VER_MAJ") + "." +
- project->first("VER_MIN"));
- }
- plist_in_text = plist_in_text.replace("@TYPEINFO@",
- (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") ? QString::fromLatin1("????") :
- project->first("QMAKE_PKGINFO_TYPEINFO").left(4).toQString()));
- QFile plist_out_file("Info.plist");
- if(plist_out_file.open(QIODevice::WriteOnly | QIODevice::Text)) {
- QTextStream plist_out(&plist_out_file);
- plist_out << plist_in_text;
- t << "\t\t\t\t" << writeSettings("INFOPLIST_FILE", "Info.plist") << ";" << "\n";
- }
- }
- }
- }
-#if 1
- t << "\t\t\t\t" << writeSettings("BUILD_ROOT", escapeFilePath(qmake_getpwd())) << ";" << "\n";
-#endif
- if(!project->isActiveConfig("staticlib")) {
- t << "\t\t\t\t" << writeSettings("OTHER_LDFLAGS",
- fixListForOutput("SUBLIBS")
- + fixListForOutput("QMAKE_LFLAGS")
- + fixListForOutput("QMAKE_LIBS")
- + fixListForOutput("QMAKE_LIBS_PRIVATE"),
- SettingsAsList, 6) << ";" << "\n";
- }
- if(!project->isEmpty("DESTDIR")) {
- ProString dir = project->first("DESTDIR");
- if (QDir::isRelativePath(dir.toQString()))
- dir.prepend(qmake_getpwd() + Option::dir_sep);
- t << "\t\t\t\t" << writeSettings("INSTALL_DIR", dir) << ";" << "\n";
- }
- if (project->first("TEMPLATE") == "lib") {
- t << "\t\t\t\t" << writeSettings("INSTALL_PATH", ProStringList()) << ";" << "\n";
- }
- if(!project->isEmpty("VERSION") && project->first("VERSION") != "0.0.0") {
- t << "\t\t\t\t" << writeSettings("DYLIB_CURRENT_VERSION", project->first("VER_MAJ")+"."+project->first("VER_MIN")+"."+project->first("VER_PAT")) << ";" << "\n";
- if(project->isEmpty("COMPAT_VERSION"))
- t << "\t\t\t\t" << writeSettings("DYLIB_COMPATIBILITY_VERSION", project->first("VER_MAJ")+"."+project->first("VER_MIN")) << ";" << "\n";
- if(project->first("TEMPLATE") == "lib" && !project->isActiveConfig("staticlib") &&
- project->isActiveConfig("lib_bundle"))
- t << "\t\t\t\t" << writeSettings("FRAMEWORK_VERSION", project->first("QMAKE_FRAMEWORK_VERSION")) << ";" << "\n";
- }
- if(!project->isEmpty("COMPAT_VERSION"))
- t << "\t\t\t\t" << writeSettings("DYLIB_COMPATIBILITY_VERSION", project->first("COMPAT_VERSION")) << ";" << "\n";
- if(!project->isEmpty("QMAKE_MACOSX_DEPLOYMENT_TARGET"))
- t << "\t\t\t\t" << writeSettings("MACOSX_DEPLOYMENT_TARGET", project->first("QMAKE_MACOSX_DEPLOYMENT_TARGET")) << ";" << "\n";
- if(project->first("TEMPLATE") == "app") {
- t << "\t\t\t\t" << writeSettings("PRODUCT_NAME", fixForOutput(project->first("QMAKE_ORIG_TARGET").toQString())) << ";" << "\n";
- } else {
- if(!project->isActiveConfig("plugin") && project->isActiveConfig("staticlib")) {
- t << "\t\t\t\t" << writeSettings("LIBRARY_STYLE", "STATIC") << ";" << "\n";
- } else {
- t << "\t\t\t\t" << writeSettings("LIBRARY_STYLE", "DYNAMIC") << ";" << "\n";
- }
- ProString lib = project->first("QMAKE_ORIG_TARGET");
- if(!project->isActiveConfig("lib_bundle") && !project->isActiveConfig("staticlib"))
- lib.prepend("lib");
- t << "\t\t\t\t" << writeSettings("PRODUCT_NAME", escapeFilePath(lib)) << ";" << "\n";
- }
- tmp = project->values("QMAKE_PBX_VARS");
- for(int i = 0; i < tmp.count(); i++) {
- QString var = tmp[i].toQString(), val = QString::fromLocal8Bit(qgetenv(var.toLatin1().constData()));
- if(val.isEmpty() && var == "TB")
- val = "/usr/bin/";
- t << "\t\t\t\t" << writeSettings(var, escapeFilePath(val)) << ";" << "\n";
- }
- t << "\t\t\t" << "};" << "\n"
- << "\t\t\t" << "conditionalBuildSettings = {" << "\n"
- << "\t\t\t" << "};" << "\n"
- << "\t\t\t" << writeSettings("dependencies", project->values("QMAKE_PBX_TARGET_DEPENDS"), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << writeSettings("productReference", keyFor(pbx_dir + "QMAKE_PBX_REFERENCE")) << ";" << "\n"
- << "\t\t\t" << writeSettings("shouldUseHeadermap", "1", SettingsNoQuote) << ";" << "\n";
+ SettingsAsList, 4) << ";" << "\n";
+ t << "\t\t\t" << writeSettings("dependencies", project->values("QMAKE_PBX_TARGET_DEPENDS"), SettingsAsList, 4) << ";" << "\n"
+ << "\t\t\t" << writeSettings("productReference", keyFor(pbx_dir + "QMAKE_PBX_REFERENCE")) << ";" << "\n";
t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_TARGET"), SettingsNoQuote) << ";" << "\n";
t << "\t\t\t" << writeSettings("isa", "PBXNativeTarget", SettingsNoQuote) << ";" << "\n";
+ t << "\t\t\t" << writeSettings("buildRules", ProStringList(), SettingsAsList) << ";" << "\n";
if(project->first("TEMPLATE") == "app") {
- if(!project->isActiveConfig("app_bundle")) {
- if (!project->isEmpty("QMAKE_PBX_PRODUCT_TYPE"))
- t << "\t\t\t" << writeSettings("productType", project->first("QMAKE_PBX_PRODUCT_TYPE")) << ";" << "\n";
- else
- t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.tool") << ";" << "\n";
+ if (!project->isEmpty("QMAKE_PBX_PRODUCT_TYPE")) {
+ t << "\t\t\t" << writeSettings("productType", project->first("QMAKE_PBX_PRODUCT_TYPE")) << ";" << "\n";
} else {
- if (!project->isEmpty("QMAKE_PBX_PRODUCT_TYPE"))
- t << "\t\t\t" << writeSettings("productType", project->first("QMAKE_PBX_PRODUCT_TYPE")) << ";" << "\n";
- else
+ if (project->isActiveConfig("app_bundle"))
t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.application") << ";" << "\n";
- t << "\t\t\t" << "productSettingsXML = \"";
- bool read_plist = false;
- if(exists("Info.plist")) {
- QFile plist("Info.plist");
- if (plist.open(QIODevice::ReadOnly)) {
- read_plist = true;
- QTextStream stream(&plist);
- while(!stream.atEnd())
- t << stream.readLine().replace('"', "\\\"") << endl;
- }
- }
- if(!read_plist) {
- t << "<?xml version="
- << "\\\"1.0\\\" encoding=" << "\\\"UTF-8\\\"" << "?>" << "\n"
- << "\t\t\t\t" << "<!DOCTYPE plist SYSTEM \\\"file://localhost/System/"
- << "Library/DTDs/PropertyList.dtd\\\">" << "\n"
- << "\t\t\t\t" << "<plist version=\\\"0.9\\\">" << "\n"
- << "\t\t\t\t" << "<dict>" << "\n"
- << "\t\t\t\t\t" << "<key>CFBundleDevelopmentRegion</key>" << "\n"
- << "\t\t\t\t\t" << "<string>English</string>" << "\n"
- << "\t\t\t\t\t" << "<key>CFBundleExecutable</key>" << "\n"
- << "\t\t\t\t\t" << "<string>" << project->first("QMAKE_ORIG_TARGET") << "</string>" << "\n"
- << "\t\t\t\t\t" << "<key>CFBundleIconFile</key>" << "\n"
- << "\t\t\t\t\t" << "<string>" << var("ICON").section(Option::dir_sep, -1) << "</string>" << "\n"
- << "\t\t\t\t\t" << "<key>CFBundleInfoDictionaryVersion</key>" << "\n"
- << "\t\t\t\t\t" << "<string>6.0</string>" << "\n"
- << "\t\t\t\t\t" << "<key>CFBundlePackageType</key>" << "\n"
- << "\t\t\t\t\t" << "<string>APPL</string>" << "\n"
- << "\t\t\t\t\t" << "<key>CFBundleSignature</key>" << "\n"
- << "\t\t\t\t\t" << "<string>"
- << (project->isEmpty("QMAKE_PKGINFO_TYPEINFO") ? QString::fromLatin1("????") :
- project->first("QMAKE_PKGINFO_TYPEINFO").left(4)) << "</string>" << "\n"
- << "\t\t\t\t\t" << "<key>CFBundleVersion</key>" << "\n"
- << "\t\t\t\t\t" << "<string>0.1</string>" << "\n"
- << "\t\t\t\t\t" << "<key>CSResourcesFileMapped</key>" << "\n"
- << "\t\t\t\t\t" << "<true/>" << "\n"
- << "\t\t\t\t" << "</dict>" << "\n"
- << "\t\t\t\t" << "</plist>";
- }
- t << "\";" << "\n";
+ else
+ t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.tool") << ";" << "\n";
}
t << "\t\t\t" << writeSettings("name", escapeFilePath(project->first("QMAKE_ORIG_TARGET"))) << ";" << "\n"
<< "\t\t\t" << writeSettings("productName", escapeFilePath(project->first("QMAKE_ORIG_TARGET"))) << ";" << "\n";
@@ -1345,12 +1235,11 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
else
t << "\t\t\t" << writeSettings("productType", "com.apple.product-type.library.dynamic") << ";" << "\n";
}
- t << "\t\t\t" << writeSettings("startupPath", "<<ProjectDirectory>>") << ";" << "\n";
if(!project->isEmpty("DESTDIR"))
t << "\t\t\t" << writeSettings("productInstallPath", escapeFilePath(project->first("DESTDIR"))) << ";" << "\n";
t << "\t\t" << "};" << "\n";
//DEBUG/RELEASE
- QString active_buildstyle;
+ QString defaultConfig;
for(int as_release = 0; as_release < 2; as_release++)
{
QMap<QString, QString> settings;
@@ -1381,6 +1270,8 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
}
QString name = (as_release ? "Release" : "Debug");
+ if (project->isActiveConfig("debug") != (bool)as_release)
+ defaultConfig = name;
for (int i = 0; i < buildConfigGroups.size(); i++) {
QString key = keyFor("QMAKE_PBX_BUILDCONFIG_" + name + buildConfigGroups.at(i));
project->values(ProKey("QMAKE_PBX_BUILDCONFIGS_" + buildConfigGroups.at(i))).append(key);
@@ -1389,15 +1280,104 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << "buildSettings = {" << "\n";
for (QMap<QString, QString>::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it)
t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";\n";
- if (!project->isEmpty("PRECOMPILED_HEADER")) {
- t << "\t\t\t\t" << writeSettings("GCC_PRECOMPILE_PREFIX_HEADER", "YES") << ";" << "\n"
- << "\t\t\t\t" << writeSettings("GCC_PREFIX_HEADER", escapeFilePath(project->first("PRECOMPILED_HEADER"))) << ";" << "\n";
- }
if (buildConfigGroups.at(i) == QLatin1String("PROJECT")) {
+ if (!project->isEmpty("QMAKE_XCODE_GCC_VERSION"))
+ t << "\t\t\t\t" << writeSettings("GCC_VERSION", project->first("QMAKE_XCODE_GCC_VERSION"), SettingsNoQuote) << ";" << "\n";
+ ProString program = project->first("QMAKE_CC");
+ if (!program.isEmpty())
+ t << "\t\t\t\t" << writeSettings("CC", fixForOutput(findProgram(program))) << ";" << "\n";
+ program = project->first("QMAKE_CXX");
+ // Xcode will automatically take care of using CC with the right -x option,
+ // and will actually break if we pass CPLUSPLUS, by adding an additional set of "++"
+ if (!program.isEmpty() && !program.contains("clang++"))
+ t << "\t\t\t\t" << writeSettings("CPLUSPLUS", fixForOutput(findProgram(program))) << ";" << "\n";
+ program = project->first("QMAKE_LINK");
+ if (!program.isEmpty())
+ t << "\t\t\t\t" << writeSettings("LDPLUSPLUS", fixForOutput(findProgram(program))) << ";" << "\n";
+
+ if ((project->first("TEMPLATE") == "app" && project->isActiveConfig("app_bundle")) ||
+ (project->first("TEMPLATE") == "lib" && !project->isActiveConfig("staticlib") &&
+ project->isActiveConfig("lib_bundle"))) {
+ QString plist = fileFixify(project->first("QMAKE_INFO_PLIST").toQString());
+ if (plist.isEmpty())
+ plist = specdir() + QDir::separator() + "Info.plist." + project->first("TEMPLATE");
+ if (exists(plist)) {
+ QFile plist_in_file(plist);
+ if (plist_in_file.open(QIODevice::ReadOnly)) {
+ QTextStream plist_in(&plist_in_file);
+ QString plist_in_text = plist_in.readAll();
+ plist_in_text = plist_in_text.replace("@ICON@",
+ (project->isEmpty("ICON") ? QString("") : project->first("ICON").toQString().section(Option::dir_sep, -1)));
+ if (project->first("TEMPLATE") == "app") {
+ plist_in_text = plist_in_text.replace("@EXECUTABLE@", project->first("QMAKE_ORIG_TARGET").toQString());
+ } else {
+ plist_in_text = plist_in_text.replace("@LIBRARY@", project->first("QMAKE_ORIG_TARGET").toQString());
+ }
+ plist_in_text = plist_in_text.replace("@BUNDLEIDENTIFIER@", QLatin1String("${PRODUCT_NAME:rfc1034identifier}"));
+ if (!project->values("VERSION").isEmpty()) {
+ plist_in_text = plist_in_text.replace("@SHORT_VERSION@", project->first("VER_MAJ") + "." +
+ project->first("VER_MIN"));
+ }
+ plist_in_text = plist_in_text.replace("@TYPEINFO@",
+ (project->isEmpty("QMAKE_PKGINFO_TYPEINFO")
+ ? QString::fromLatin1("????") : project->first("QMAKE_PKGINFO_TYPEINFO").left(4).toQString()));
+ QFile plist_out_file("Info.plist");
+ if (plist_out_file.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ QTextStream plist_out(&plist_out_file);
+ plist_out << plist_in_text;
+ t << "\t\t\t\t" << writeSettings("INFOPLIST_FILE", "Info.plist") << ";" << "\n";
+ }
+ }
+ }
+ }
+
+ t << "\t\t\t\t" << writeSettings("SYMROOT", escapeFilePath(qmake_getpwd())) << ";" << "\n";
+
+ if (!project->isEmpty("DESTDIR")) {
+ ProString dir = project->first("DESTDIR");
+ if (QDir::isRelativePath(dir.toQString()))
+ dir.prepend(qmake_getpwd() + Option::dir_sep);
+ t << "\t\t\t\t" << writeSettings("TARGET_BUILD_DIR", dir) << ";" << "\n";
+ }
+
+ if (project->first("TEMPLATE") == "lib")
+ t << "\t\t\t\t" << writeSettings("INSTALL_PATH", ProStringList()) << ";" << "\n";
+
+ if (!project->isEmpty("VERSION") && project->first("VERSION") != "0.0.0") {
+ t << "\t\t\t\t" << writeSettings("DYLIB_CURRENT_VERSION", project->first("VER_MAJ")+"."+project->first("VER_MIN")+"."+project->first("VER_PAT")) << ";" << "\n";
+ if (project->isEmpty("COMPAT_VERSION"))
+ t << "\t\t\t\t" << writeSettings("DYLIB_COMPATIBILITY_VERSION", project->first("VER_MAJ")+"."+project->first("VER_MIN")) << ";" << "\n";
+ if (project->first("TEMPLATE") == "lib" && !project->isActiveConfig("staticlib") &&
+ project->isActiveConfig("lib_bundle"))
+ t << "\t\t\t\t" << writeSettings("FRAMEWORK_VERSION", project->first("QMAKE_FRAMEWORK_VERSION")) << ";" << "\n";
+ }
+ if (!project->isEmpty("COMPAT_VERSION"))
+ t << "\t\t\t\t" << writeSettings("DYLIB_COMPATIBILITY_VERSION", project->first("COMPAT_VERSION")) << ";" << "\n";
+
+ if (!project->isEmpty("QMAKE_MACOSX_DEPLOYMENT_TARGET"))
+ t << "\t\t\t\t" << writeSettings("MACOSX_DEPLOYMENT_TARGET", project->first("QMAKE_MACOSX_DEPLOYMENT_TARGET")) << ";" << "\n";
+ if (!project->isEmpty("QMAKE_IOS_DEPLOYMENT_TARGET"))
+ t << "\t\t\t\t" << writeSettings("IPHONEOS_DEPLOYMENT_TARGET", project->first("QMAKE_IOS_DEPLOYMENT_TARGET")) << ";" << "\n";
+
+ if (!project->isEmpty("QMAKE_XCODE_CODE_SIGN_IDENTITY"))
+ t << "\t\t\t\t" << writeSettings("CODE_SIGN_IDENTITY", project->first("QMAKE_XCODE_CODE_SIGN_IDENTITY")) << ";" << "\n";
+
+ tmp = project->values("QMAKE_PBX_VARS");
+ for (int i = 0; i < tmp.count(); i++) {
+ QString var = tmp[i].toQString(), val = QString::fromLocal8Bit(qgetenv(var.toLatin1().constData()));
+ if (val.isEmpty() && var == "TB")
+ val = "/usr/bin/";
+ t << "\t\t\t\t" << writeSettings(var, escapeFilePath(val)) << ";" << "\n";
+ }
+ if (!project->isEmpty("PRECOMPILED_HEADER")) {
+ t << "\t\t\t\t" << writeSettings("GCC_PRECOMPILE_PREFIX_HEADER", "YES") << ";" << "\n"
+ << "\t\t\t\t" << writeSettings("GCC_PREFIX_HEADER", escapeFilePath(project->first("PRECOMPILED_HEADER"))) << ";" << "\n";
+ }
t << "\t\t\t\t" << writeSettings("HEADER_SEARCH_PATHS", fixListForOutput("INCLUDEPATH") + ProStringList(fixForOutput(specdir())), SettingsAsList, 5) << ";" << "\n"
<< "\t\t\t\t" << writeSettings("LIBRARY_SEARCH_PATHS", fixListForOutput("QMAKE_PBX_LIBPATHS"), SettingsAsList, 5) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("FRAMEWORK_SEARCH_PATHS", fixListForOutput("QMAKE_FRAMEWORKPATH"), SettingsAsList, 5) << ";" << "\n"
- << "\t\t\t\t" << writeSettings("INFOPLIST_FILE", "Info.plist") << ";" << "\n";
+ << "\t\t\t\t" << writeSettings("FRAMEWORK_SEARCH_PATHS", fixListForOutput("QMAKE_FRAMEWORKPATH"),
+ !project->values("QMAKE_FRAMEWORKPATH").isEmpty() ? SettingsAsList : 0, 5) << ";" << "\n";
+
{
ProStringList cflags = fixListForOutput("QMAKE_CFLAGS");
const ProStringList &prl_defines = project->values("PRL_EXPORT_DEFINES");
@@ -1448,20 +1428,6 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
t << "\t\t\t" << "};" << "\n"
<< "\t\t\t" << writeSettings("name", name) << ";" << "\n"
<< "\t\t" << "};" << "\n";
-
- key = keyFor("QMAKE_PBX_BUILDSTYLE_" + name);
- project->values("QMAKE_PBX_BUILDSTYLES").append(key);
- if (project->isActiveConfig("debug") != (bool)as_release)
- active_buildstyle = name;
- t << "\t\t" << key << " = {" << "\n"
- << "\t\t\t" << writeSettings("buildRules", ProStringList(), SettingsAsList, 4) << ";" << "\n"
- << "\t\t\t" << "buildSettings = {" << "\n";
- for(QMap<QString, QString>::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it)
- t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";" << "\n";
- t << "\t\t\t" << "};" << "\n"
- << "\t\t\t" << writeSettings("isa", "PBXBuildStyle") << ";" << "\n"
- << "\t\t\t" << writeSettings("name", name) << ";" << "\n"
- << "\t\t" << "};" << "\n";
}
}
for (int i = 0; i < buildConfigGroups.size(); i++) {
@@ -1469,20 +1435,24 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
<< "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";" << "\n"
<< "\t\t\t" << writeSettings("buildConfigurations", project->values(ProKey("QMAKE_PBX_BUILDCONFIGS_" + buildConfigGroups.at(i))), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("defaultConfigurationIsName", active_buildstyle) << ";" << "\n"
+ << "\t\t\t" << writeSettings("defaultConfigurationName", defaultConfig) << ";" << "\n"
<< "\t\t" << "};" << "\n";
}
//ROOT
t << "\t\t" << keyFor("QMAKE_PBX_ROOT") << " = {" << "\n"
- << "\t\t\t" << writeSettings("buildStyles", project->values("QMAKE_PBX_BUILDSTYLES"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t\t" << writeSettings("hasScannedForEncodings", "1", SettingsNoQuote) << ";" << "\n"
+ << "\t\t\t" << writeSettings("compatibilityVersion", "Xcode 3.2") << ";" << "\n"
<< "\t\t\t" << writeSettings("isa", "PBXProject", SettingsNoQuote) << ";" << "\n"
- << "\t\t\t" << writeSettings("mainGroup", keyFor("QMAKE_PBX_ROOT_GROUP")) << ";" << "\n";
+ << "\t\t\t" << writeSettings("mainGroup", keyFor("QMAKE_PBX_ROOT_GROUP")) << ";" << "\n"
+ << "\t\t\t" << writeSettings("productRefGroup", keyFor("Products")) << ";" << "\n";
t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_PROJECT")) << ";" << "\n";
t << "\t\t\t" << writeSettings("projectDirPath", ProStringList()) << ";" << "\n"
+ << "\t\t\t" << writeSettings("projectRoot", "") << ";" << "\n"
<< "\t\t\t" << writeSettings("targets", project->values("QMAKE_PBX_TARGETS"), SettingsAsList, 4) << ";" << "\n"
<< "\t\t" << "};" << "\n";
+ // FIXME: Deal with developmentRegion and knownRegions for QMAKE_PBX_ROOT
+
//FOOTER
t << "\t" << "};" << "\n"
<< "\t" << writeSettings("rootObject", keyFor("QMAKE_PBX_ROOT")) << ";" << "\n"
@@ -1513,6 +1483,9 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
writingUnixMakefileGenerator = false;
}
}
+
+ qmake_setpwd(input_dir);
+
return true;
}
@@ -1726,10 +1699,9 @@ ProjectBuilderMakefileGenerator::reftypeForFile(const QString &where)
QString ProjectBuilderMakefileGenerator::sourceTreeForFile(const QString &where)
{
- QString ret = "<absolute>";
- if (QDir::isRelativePath(unescapeFilePath(where)))
- ret = "SOURCE_ROOT"; //relative
- return ret;
+ // We always use absolute paths, instead of maintaining the SRCROOT
+ // build variable and making files relative to that.
+ return QLatin1String("<absolute>");
}
QString
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 55c819657a..3cac073d72 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -305,8 +305,8 @@ MakefileGenerator::setProjectFile(QMakeProject *p)
project = p;
if (project->isActiveConfig("win32"))
target_mode = TARG_WIN_MODE;
- else if (project->isActiveConfig("macx"))
- target_mode = TARG_MACX_MODE;
+ else if (project->isActiveConfig("mac"))
+ target_mode = TARG_MAC_MODE;
else
target_mode = TARG_UNIX_MODE;
init();
@@ -448,6 +448,9 @@ MakefileGenerator::init()
if (chkglue.isEmpty()) // Backwards compat with Qt4 specs
chkglue = isWindowsShell() ? "" : "|| ";
+ if (v["QMAKE_LINK_O_FLAG"].isEmpty())
+ v["QMAKE_LINK_O_FLAG"].append("-o ");
+
ProStringList &quc = v["QMAKE_EXTRA_COMPILERS"];
//make sure the COMPILERS are in the correct input/output chain order
@@ -3233,7 +3236,7 @@ MakefileGenerator::writePkgConfigFile()
t << "Libs: ";
QString pkgConfiglibDir;
QString pkgConfiglibName;
- if (target_mode == TARG_MACX_MODE && project->isActiveConfig("lib_bundle")) {
+ if (target_mode == TARG_MAC_MODE && project->isActiveConfig("lib_bundle")) {
pkgConfiglibDir = "-F${libdir}";
ProString bundle;
if (!project->isEmpty("QMAKE_FRAMEWORK_BUNDLE_NAME"))
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index 2f3e73ff6b..e1447c61c3 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -90,7 +90,7 @@ class MakefileGenerator : protected QMakeSourceFileInfo
mutable QHash<ReplaceExtraCompilerCacheKey, QString> extraCompilerVariablesCache;
protected:
- enum TARG_MODE { TARG_UNIX_MODE, TARG_MACX_MODE, TARG_WIN_MODE } target_mode;
+ enum TARG_MODE { TARG_UNIX_MODE, TARG_MAC_MODE, TARG_WIN_MODE } target_mode;
ProStringList createObjectList(const ProStringList &sources);
diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp
index da0da53e05..4f28321b09 100644
--- a/qmake/generators/unix/unixmake.cpp
+++ b/qmake/generators/unix/unixmake.cpp
@@ -142,6 +142,7 @@ UnixMakefileGenerator::init()
project->values("QMAKE_L_FLAG")
<< (project->isActiveConfig("rvct_linker") ? "--userlibpath "
: project->isActiveConfig("armcc_linker") ? "-L--userlibpath="
+ : project->isActiveConfig("ti_linker") ? "--search_path="
: "-L");
ProStringList ldadd;
if(!project->isEmpty("QMAKE_LIBDIR")) {
@@ -490,10 +491,12 @@ UnixMakefileGenerator::findLibraries()
} else if(opt.startsWith("-l")) {
if (project->isActiveConfig("rvct_linker") || project->isActiveConfig("armcc_linker")) {
(*it) = "lib" + opt.mid(2) + ".so";
+ } else if (project->isActiveConfig("ti_linker")) {
+ (*it) = opt.mid(2);
} else {
stub = opt.mid(2);
}
- } else if (target_mode == TARG_MACX_MODE && opt.startsWith("-framework")) {
+ } else if (target_mode == TARG_MAC_MODE && opt.startsWith("-framework")) {
if (opt.length() == 10)
++it;
// Skip
@@ -607,11 +610,11 @@ UnixMakefileGenerator::processPrlFiles()
break;
}
}
- } else if (target_mode == TARG_MACX_MODE && opt.startsWith("-F")) {
+ } else if (target_mode == TARG_MAC_MODE && opt.startsWith("-F")) {
QMakeLocalFileName f(opt.right(opt.length()-2));
if(!frameworkdirs.contains(f))
frameworkdirs.insert(fwidx++, f);
- } else if (target_mode == TARG_MACX_MODE && opt.startsWith("-framework")) {
+ } else if (target_mode == TARG_MAC_MODE && opt.startsWith("-framework")) {
if(opt.length() > 11)
opt = opt.mid(11);
else
@@ -650,7 +653,7 @@ UnixMakefileGenerator::processPrlFiles()
ProKey arch("default");
ProString opt = l.at(lit).trimmed();
if(opt.startsWith("-")) {
- if (target_mode == TARG_MACX_MODE && opt.startsWith("-Xarch")) {
+ if (target_mode == TARG_MAC_MODE && opt.startsWith("-Xarch")) {
if (opt.length() > 7) {
arch = opt.mid(7).toKey();
opt = l.at(++lit);
@@ -658,7 +661,7 @@ UnixMakefileGenerator::processPrlFiles()
}
if (opt.startsWith(libArg) ||
- (target_mode == TARG_MACX_MODE && opt.startsWith("-F"))) {
+ (target_mode == TARG_MAC_MODE && opt.startsWith("-F"))) {
if(!lflags[arch].contains(opt))
lflags[arch].append(opt);
} else if(opt.startsWith("-l") || opt == "-pthread") {
@@ -666,12 +669,12 @@ UnixMakefileGenerator::processPrlFiles()
if (lflags[arch].contains(opt))
lflags[arch].removeAll(opt);
lflags[arch].append(opt);
- } else if (target_mode == TARG_MACX_MODE && opt.startsWith("-framework")) {
+ } else if (target_mode == TARG_MAC_MODE && opt.startsWith("-framework")) {
if(opt.length() > 11)
opt = opt.mid(11);
else {
opt = l.at(++lit);
- if (target_mode == TARG_MACX_MODE && opt.startsWith("-Xarch"))
+ if (target_mode == TARG_MAC_MODE && opt.startsWith("-Xarch"))
opt = l.at(++lit); // The user has done the right thing and prefixed each part
}
bool found = false;
@@ -833,7 +836,7 @@ UnixMakefileGenerator::defaultInstall(const QString &t)
uninst.append("-$(DEL_FILE) \"" + dst_targ + "\"");
if(!links.isEmpty()) {
for(int i = 0; i < links.size(); ++i) {
- if (target_mode == TARG_UNIX_MODE || target_mode == TARG_MACX_MODE) {
+ if (target_mode == TARG_UNIX_MODE || target_mode == TARG_MAC_MODE) {
QString link = Option::fixPathToTargetOS(destdir + links[i], false);
int lslash = link.lastIndexOf(Option::dir_sep);
if(lslash != -1)
diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp
index 41e40e0bb6..400908bc91 100644
--- a/qmake/generators/unix/unixmake2.cpp
+++ b/qmake/generators/unix/unixmake2.cpp
@@ -349,7 +349,8 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
<< project->first("QMAKE_EXTENSION_STATICLIB") << " ";
t << endl << endl;
}
- if(project->isActiveConfig("depend_prl") && !project->isEmpty("QMAKE_PRL_INTERNAL_FILES")) {
+ if ((project->isActiveConfig("depend_prl") || project->isActiveConfig("fast_depend_prl"))
+ && !project->isEmpty("QMAKE_PRL_INTERNAL_FILES")) {
const ProStringList &l = project->values("QMAKE_PRL_INTERNAL_FILES");
ProStringList::ConstIterator it;
for(it = l.begin(); it != l.end(); ++it) {
@@ -361,8 +362,12 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
dir = (*it).left(slsh + 1);
QString targ = dir + libinfo.first("QMAKE_PRL_TARGET");
target_deps += " " + targ;
- t << targ << ":" << "\n\t"
- << "@echo \"Creating '" << targ << "'\"" << "\n\t"
+ t << targ;
+ if (project->isActiveConfig("fast_depend_prl"))
+ t << ":\n\t@echo \"Creating '";
+ else
+ t << ": FORCE\n\t@echo \"Creating/updating '";
+ t << targ << "'\"" << "\n\t"
<< "(cd " << libinfo.first("QMAKE_PRL_BUILD_DIR") << ";"
<< "$(MAKE))" << endl;
}
@@ -436,7 +441,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
t << "\n\t" << mkdir_p_asstring(destdir) << "\n\t";
if(!project->isEmpty("QMAKE_PRE_LINK"))
t << var("QMAKE_PRE_LINK") << "\n\t";
- t << "$(LINK) $(LFLAGS) -o $(TARGET) " << incr_deps << " " << incr_objs << " $(OBJCOMP) $(LIBS)";
+ t << "$(LINK) $(LFLAGS) " << var("QMAKE_LINK_O_FLAG") << "$(TARGET) " << incr_deps << " " << incr_objs << " $(OBJCOMP) $(LIBS)";
if(!project->isEmpty("QMAKE_POST_LINK"))
t << "\n\t" << var("QMAKE_POST_LINK");
t << endl << endl;
@@ -451,7 +456,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
t << mkdir_p_asstring(destdir) << "\n\t";
if (!project->isEmpty("QMAKE_PRE_LINK"))
t << var("QMAKE_PRE_LINK") << "\n\t";
- t << "$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)";
+ t << "$(LINK) $(LFLAGS) " << var("QMAKE_LINK_O_FLAG") << "$(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)";
if (!project->isEmpty("QMAKE_POST_LINK"))
t << "\n\t" << var("QMAKE_POST_LINK");
}
@@ -503,7 +508,7 @@ UnixMakefileGenerator::writeMakeParts(QTextStream &t)
t << incr_target_dir << ": $(INCREMENTAL_OBJECTS)" << "\n\t";
if(!destdir.isEmpty())
t << mkdir_p_asstring(destdir) << "\n\t";
- t << "$(LINK) " << incr_lflags << " -o "<< incr_target_dir <<
+ t << "$(LINK) " << incr_lflags << " " << var("QMAKE_LINK_O_FLAG") << incr_target_dir <<
" $(INCREMENTAL_OBJECTS)" << endl;
//communicated below
ProStringList &cmd = project->values("QMAKE_LINK_SHLIB_CMD");
@@ -1173,7 +1178,7 @@ void UnixMakefileGenerator::init2()
}
if (project->values("QMAKE_LINK_SHLIB_CMD").isEmpty())
project->values("QMAKE_LINK_SHLIB_CMD").append(
- "$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP)");
+ "$(LINK) $(LFLAGS) " + project->first("QMAKE_LINK_O_FLAG") + "$(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP)");
}
if (!project->values("QMAKE_APP_FLAG").isEmpty()) {
project->values("QMAKE_CFLAGS") += project->values("QMAKE_CFLAGS_APP");
@@ -1218,7 +1223,7 @@ void UnixMakefileGenerator::init2()
}
if(!project->isEmpty("QMAKE_BUNDLE")) {
- QString plist = fileFixify(project->first("QMAKE_INFO_PLIST").toQString());
+ QString plist = fileFixify(project->first("QMAKE_INFO_PLIST").toQString(), qmake_getpwd());
if(plist.isEmpty())
plist = specdir() + QDir::separator() + "Info.plist." + project->first("TEMPLATE");
if(exists(Option::fixPathToLocalOS(plist))) {
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp
index 06e25c29f3..e64b2160b3 100644
--- a/qmake/generators/win32/mingw_make.cpp
+++ b/qmake/generators/win32/mingw_make.cpp
@@ -405,7 +405,7 @@ void MingwMakefileGenerator::writeBuildRulesPart(QTextStream &t)
t << "\n\t" << objectsLinkLine << " " ;
}
} else if (project->first("TEMPLATE") != "aux") {
- t << "\n\t" << "$(LINKER) $(LFLAGS) -o $(DESTDIR_TARGET) " << objectsLinkLine << " " << " $(LIBS)";
+ t << "\n\t" << "$(LINKER) $(LFLAGS) " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) " << objectsLinkLine << " " << " $(LIBS)";
}
if(!project->isEmpty("QMAKE_POST_LINK"))
t << "\n\t" <<var("QMAKE_POST_LINK");
@@ -431,7 +431,7 @@ void MingwMakefileGenerator::writeRcFilePart(QTextStream &t)
if (!rc_file.isEmpty()) {
t << escapeDependencyPath(var("RES_FILE")) << ": " << rc_file << "\n\t"
- << var("QMAKE_RC") << " -i " << rc_file << " -o " << var("RES_FILE")
+ << var("QMAKE_RC") << " -i " << rc_file << " -o " << var("RES_FILE")
<< incPathStr << " $(DEFINES)" << endl << endl;
}
}
diff --git a/qmake/generators/win32/mingw_make.h b/qmake/generators/win32/mingw_make.h
index 6bdcb7ea70..0e1267994e 100644
--- a/qmake/generators/win32/mingw_make.h
+++ b/qmake/generators/win32/mingw_make.h
@@ -65,7 +65,7 @@ private:
void writeRcFilePart(QTextStream &t);
QStringList &findDependencies(const QString &file);
-
+
QString preCompHeaderOut;
virtual bool findLibraries();
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index 299b115bdc..ee53f94d90 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -276,6 +276,9 @@ void NmakeMakefileGenerator::init()
project->values("QMAKE_LFLAGS").append("/VERSION:" + major + "." + minor);
}
+ if (project->isEmpty("QMAKE_LINK_O_FLAG"))
+ project->values("QMAKE_LINK_O_FLAG").append("/OUT:");
+
// Base class init!
MakefileGenerator::init();
@@ -382,7 +385,7 @@ void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t)
if(!project->isEmpty("QMAKE_PRE_LINK"))
t << "\n\t" <<var("QMAKE_PRE_LINK");
if(project->isActiveConfig("staticlib")) {
- t << "\n\t" << "$(LIBAPP) $(LIBFLAGS) /OUT:$(DESTDIR_TARGET) @<<" << "\n\t "
+ t << "\n\t" << "$(LIBAPP) $(LIBFLAGS) " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) @<<" << "\n\t "
<< "$(OBJECTS)"
<< "\n<<";
} else if (templateName != "aux") {
@@ -448,7 +451,7 @@ void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t)
}
}
QString signature = !project->isEmpty("SIGNATURE_FILE") ? var("SIGNATURE_FILE") : var("DEFAULT_SIGNATURE");
- bool useSignature = !signature.isEmpty() && !project->isActiveConfig("staticlib") &&
+ bool useSignature = !signature.isEmpty() && !project->isActiveConfig("staticlib") &&
!project->isEmpty("CE_SDK") && !project->isEmpty("CE_ARCH");
if(useSignature) {
t << "\n\tsigntool sign /F " << signature << " $(DESTDIR_TARGET)";
@@ -464,7 +467,7 @@ void NmakeMakefileGenerator::writeLinkCommand(QTextStream &t, const QString &ext
t << "$(LINKER) $(LFLAGS)";
if (!extraFlags.isEmpty())
t << ' ' << extraFlags;
- t << " /OUT:$(DESTDIR_TARGET) @<<\n"
+ t << " " << var("QMAKE_LINK_O_FLAG") << "$(DESTDIR_TARGET) @<<\n"
<< "$(OBJECTS) $(LIBS)";
if (!extraInlineFileContent.isEmpty())
t << ' ' << extraInlineFileContent;
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index b082fcb307..fce2147ed5 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -1060,10 +1060,6 @@ void VcprojGenerator::initLinkerTool()
conf.linker.OutputFile = "$(OutDir)\\";
conf.linker.OutputFile += project->first("MSVCPROJ_TARGET").toQString();
-
- if(project->isActiveConfig("dll")){
- conf.linker.parseOptions(project->values("QMAKE_LFLAGS_QT_DLL"));
- }
}
void VcprojGenerator::initResourceTool()
diff --git a/qmake/library/qmakebuiltins.cpp b/qmake/library/qmakebuiltins.cpp
index f46d66ba89..0dedd64e6e 100644
--- a/qmake/library/qmakebuiltins.cpp
+++ b/qmake/library/qmakebuiltins.cpp
@@ -467,8 +467,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
QString tmp = args.at(0).toQString(m_tmp1);
for (int i = 1; i < args.count(); ++i)
tmp = tmp.arg(args.at(i).toQString(m_tmp2));
- // Note: this depends on split_value_list() making a deep copy
- ret = split_value_list(tmp);
+ ret << ProString(tmp);
}
break;
case E_FORMAT_NUMBER:
@@ -561,7 +560,7 @@ ProStringList QMakeEvaluator::evaluateBuiltinExpand(
src = s;
break;
}
- ret = split_value_list(before + var.join(glue) + after, src);
+ ret << ProString(before + var.join(glue) + after).setSource(src);
}
}
break;
diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp
index 8b6a0f8598..4f4e5854f1 100644
--- a/qmake/library/qmakeevaluator.cpp
+++ b/qmake/library/qmakeevaluator.cpp
@@ -126,6 +126,7 @@ void QMakeEvaluator::initStatics()
statics.strforever = QLatin1String("forever");
statics.strhost_build = QLatin1String("host_build");
statics.strTEMPLATE = ProKey("TEMPLATE");
+ statics.strQMAKE_PLATFORM = ProKey("QMAKE_PLATFORM");
#ifdef PROEVALUATOR_FULL
statics.strREQUIRES = ProKey("REQUIRES");
#endif
@@ -263,48 +264,55 @@ ProStringList QMakeEvaluator::split_value_list(const QString &vals, const ProFil
{
QString build;
ProStringList ret;
- QStack<char> quote;
-
- const ushort SPACE = ' ';
- const ushort LPAREN = '(';
- const ushort RPAREN = ')';
- const ushort SINGLEQUOTE = '\'';
- const ushort DOUBLEQUOTE = '"';
- const ushort BACKSLASH = '\\';
if (!source)
source = currentProFile();
- ushort unicode;
const QChar *vals_data = vals.data();
const int vals_len = vals.length();
- int parens = 0;
+ ushort quote = 0;
+ bool hadWord = false;
for (int x = 0; x < vals_len; x++) {
- unicode = vals_data[x].unicode();
- if (x != (int)vals_len-1 && unicode == BACKSLASH &&
- (vals_data[x+1].unicode() == SINGLEQUOTE || vals_data[x+1].unicode() == DOUBLEQUOTE)) {
- build += vals_data[x++]; //get that 'escape'
- } else if (!quote.isEmpty() && unicode == quote.top()) {
- quote.pop();
- } else if (unicode == SINGLEQUOTE || unicode == DOUBLEQUOTE) {
- quote.push(unicode);
- } else if (unicode == RPAREN) {
- --parens;
- } else if (unicode == LPAREN) {
- ++parens;
+ ushort unicode = vals_data[x].unicode();
+ if (unicode == quote) {
+ quote = 0;
+ continue;
}
-
- if (!parens && quote.isEmpty() && vals_data[x] == SPACE) {
- ret << ProString(build).setSource(source);
- build.clear();
- } else {
- build += vals_data[x];
+ switch (unicode) {
+ case '"':
+ case '\'':
+ quote = unicode;
+ hadWord = true;
+ continue;
+ case ' ':
+ case '\t':
+ if (!quote) {
+ if (hadWord) {
+ ret << ProString(build).setSource(source);
+ build.clear();
+ hadWord = false;
+ }
+ continue;
+ }
+ build += QChar(unicode);
+ break;
+ case '\\':
+ if (x + 1 != vals_len) {
+ ushort next = vals_data[++x].unicode();
+ if (next == '\'' || next == '"' || next == '\\')
+ unicode = next;
+ else
+ --x;
+ }
+ // fallthrough
+ default:
+ hadWord = true;
+ build += QChar(unicode);
+ break;
}
}
- if (!build.isEmpty())
+ if (hadWord)
ret << ProString(build).setSource(source);
- if (parens)
- deprecationWarning(fL1S("Unmatched parentheses are deprecated."));
return ret;
}
@@ -924,6 +932,8 @@ void QMakeEvaluator::visitProVariable(
if (varName == statics.strTEMPLATE)
setTemplate();
+ else if (varName == statics.strQMAKE_PLATFORM)
+ updateFeaturePaths();
#ifdef PROEVALUATOR_FULL
else if (varName == statics.strREQUIRES)
checkRequirements(values(varName));
@@ -1217,7 +1227,6 @@ bool QMakeEvaluator::loadSpec()
}
if (!loadSpecInternal())
return false;
- updateFeaturePaths(); // The spec extends the feature search path, so rebuild the cache.
if (!m_conffile.isEmpty()
&& evaluateFile(m_conffile, QMakeHandler::EvalConfigFile, LoadProOnly) != ReturnTrue) {
return false;
diff --git a/qmake/library/qmakeevaluator_p.h b/qmake/library/qmakeevaluator_p.h
index 9830496424..935f112f52 100644
--- a/qmake/library/qmakeevaluator_p.h
+++ b/qmake/library/qmakeevaluator_p.h
@@ -89,6 +89,7 @@ struct QMakeStatics {
QString strforever;
QString strhost_build;
ProKey strTEMPLATE;
+ ProKey strQMAKE_PLATFORM;
#ifdef PROEVALUATOR_FULL
ProKey strREQUIRES;
#endif
diff --git a/qmake/library/qmakeglobals.cpp b/qmake/library/qmakeglobals.cpp
index ac9a0856ff..42bb85bb02 100644
--- a/qmake/library/qmakeglobals.cpp
+++ b/qmake/library/qmakeglobals.cpp
@@ -115,7 +115,6 @@ QMakeGlobals::QMakeGlobals()
dirlist_sep = QLatin1Char(':');
dir_sep = QLatin1Char('/');
#endif
- qmakespec = getEnv(QLatin1String("QMAKESPEC"));
}
QMakeGlobals::~QMakeGlobals()
diff --git a/qmake/library/qmakeparser.cpp b/qmake/library/qmakeparser.cpp
index f32267cf59..557a779717 100644
--- a/qmake/library/qmakeparser.cpp
+++ b/qmake/library/qmakeparser.cpp
@@ -1024,7 +1024,6 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
m_tmp.setRawData((QChar *)uc + 4, nlen);
const QString *defName;
ushort defType;
- uchar nest;
if (m_tmp == statics.strfor) {
if (m_invert || m_operator == OrOperator) {
// '|' could actually work reasonably, but qmake does nonsense here.
@@ -1101,13 +1100,20 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
parseError(fL1S("%1(function) requires one literal argument.").arg(*defName));
return;
} else if (m_tmp == statics.strreturn) {
- if (argc > 1) {
- parseError(fL1S("return() requires zero or one argument."));
- bogusTest(tokPtr);
- return;
+ if (m_blockstack.top().nest & NestFunction) {
+ if (argc > 1) {
+ parseError(fL1S("return() requires zero or one argument."));
+ bogusTest(tokPtr);
+ return;
+ }
+ } else {
+ if (*uce != TokFuncTerminator) {
+ parseError(fL1S("Top-level return() requires zero arguments."));
+ bogusTest(tokPtr);
+ return;
+ }
}
defType = TokReturn;
- nest = NestFunction;
goto ctrlstm2;
} else if (m_tmp == statics.strnext) {
defType = TokNext;
@@ -1120,15 +1126,14 @@ void QMakeParser::finalizeCall(ushort *&tokPtr, ushort *uc, ushort *ptr, int arg
bogusTest(tokPtr);
return;
}
- nest = NestLoop;
- ctrlstm2:
- if (m_invert) {
- parseError(fL1S("Unexpected NOT operator in front of %1().").arg(m_tmp));
+ if (!(m_blockstack.top().nest & NestLoop)) {
+ parseError(fL1S("Unexpected %1().").arg(m_tmp));
bogusTest(tokPtr);
return;
}
- if (!(m_blockstack.top().nest & nest)) {
- parseError(fL1S("Unexpected %1().").arg(m_tmp));
+ ctrlstm2:
+ if (m_invert) {
+ parseError(fL1S("Unexpected NOT operator in front of %1().").arg(m_tmp));
bogusTest(tokPtr);
return;
}
diff --git a/qmake/main.cpp b/qmake/main.cpp
index e339239289..2056e36322 100644
--- a/qmake/main.cpp
+++ b/qmake/main.cpp
@@ -116,6 +116,11 @@ int runQMake(int argc, char **argv)
if(!tmp_dir.isEmpty() && QFile::exists(tmp_dir))
dir = tmp_dir;
}
+#ifdef Q_OS_MAC
+ if (fi.fileName().endsWith(QStringLiteral(".pbxproj"))
+ && dir.endsWith(QStringLiteral(".xcodeproj")))
+ dir += QStringLiteral("/..");
+#endif
if(!dir.isNull() && dir != ".")
Option::output_dir = dir;
if(QDir::isRelativePath(Option::output_dir))
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index aff0a9efda..66f7964c5f 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -131,7 +131,6 @@ bootstrap { #Qt code
unix {
SOURCES += qfilesystemengine_unix.cpp qfilesystemiterator_unix.cpp qfsfileengine_unix.cpp
mac {
- SOURCES += qfilesystemengine_mac.cpp
SOURCES += qcore_mac.cpp qsettings_mac.cpp qlocale_mac.mm
LIBS += -framework ApplicationServices
} else {
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/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-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);
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;
}
diff --git a/src/3rdparty/pcre.pri b/src/3rdparty/pcre.pri
index 6ab9d4dc87..8928c045fa 100644
--- a/src/3rdparty/pcre.pri
+++ b/src/3rdparty/pcre.pri
@@ -1,6 +1,8 @@
DEFINES += PCRE_HAVE_CONFIG_H
win32:DEFINES += PCRE_STATIC
+ios:DEFINES += PCRE_DISABLE_JIT
+qnx: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
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..ce2710eeb2
--- /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"
+
+static void KeccakInitialize( void );
+static void KeccakInitializeState(unsigned char *state);
+static void KeccakPermutation(unsigned char *state);
+#ifdef ProvideFast576
+static void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data);
+#endif
+#ifdef ProvideFast832
+static void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data);
+#endif
+#ifdef ProvideFast1024
+static void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data);
+#endif
+#ifdef ProvideFast1088
+static void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data);
+#endif
+#ifdef ProvideFast1152
+static void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data);
+#endif
+#ifdef ProvideFast1344
+static void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data);
+#endif
+static void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount);
+#ifdef ProvideFast1024
+static void KeccakExtract1024bits(const unsigned char *state, unsigned char *data);
+#endif
+static 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..b1b442c7e0
--- /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 <string.h>
+#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];
+
+static 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
+
+static 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); \
+ }
+
+static 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
+static 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;
+}
+
+static 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
+static 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;
+}
+
+static 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
+
+static void KeccakPermutationOnWords(UINT32 *state)
+{
+ rounds
+}
+
+static void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsigned int laneCount)
+{
+ xorLanesIntoState(laneCount, state, input)
+ rounds
+}
+
+#ifdef ProvideFast576
+static void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *input)
+{
+ xorLanesIntoState(9, state, input)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast832
+static void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *input)
+{
+ xorLanesIntoState(13, state, input)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast1024
+static void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *input)
+{
+ xorLanesIntoState(16, state, input)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast1088
+static void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *input)
+{
+ xorLanesIntoState(17, state, input)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast1152
+static void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *input)
+{
+ xorLanesIntoState(18, state, input)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast1344
+static void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *input)
+{
+ xorLanesIntoState(21, state, input)
+ rounds
+}
+#endif
+
+#else // (Schedule != 3)
+
+static void KeccakPermutationOnWords(UINT32 *state)
+{
+ declareABCDE
+#if (Unrolling != 24)
+ unsigned int i;
+#endif
+
+ copyFromState(A, state)
+ rounds
+}
+
+static void KeccakPermutationOnWordsAfterXoring(UINT32 *state, const UINT8 *input, unsigned int laneCount)
+{
+ declareABCDE
+ unsigned int i;
+
+ xorLanesIntoState(laneCount, state, input)
+ copyFromState(A, state)
+ rounds
+}
+
+#ifdef ProvideFast576
+static void KeccakPermutationOnWordsAfterXoring576bits(UINT32 *state, const UINT8 *input)
+{
+ declareABCDE
+ unsigned int i;
+
+ xorLanesIntoState(9, state, input)
+ copyFromState(A, state)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast832
+static void KeccakPermutationOnWordsAfterXoring832bits(UINT32 *state, const UINT8 *input)
+{
+ declareABCDE
+ unsigned int i;
+
+ xorLanesIntoState(13, state, input)
+ copyFromState(A, state)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast1024
+static void KeccakPermutationOnWordsAfterXoring1024bits(UINT32 *state, const UINT8 *input)
+{
+ declareABCDE
+ unsigned int i;
+
+ xorLanesIntoState(16, state, input)
+ copyFromState(A, state)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast1088
+static void KeccakPermutationOnWordsAfterXoring1088bits(UINT32 *state, const UINT8 *input)
+{
+ declareABCDE
+ unsigned int i;
+
+ xorLanesIntoState(17, state, input)
+ copyFromState(A, state)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast1152
+static void KeccakPermutationOnWordsAfterXoring1152bits(UINT32 *state, const UINT8 *input)
+{
+ declareABCDE
+ unsigned int i;
+
+ xorLanesIntoState(18, state, input)
+ copyFromState(A, state)
+ rounds
+}
+#endif
+
+#ifdef ProvideFast1344
+static void KeccakPermutationOnWordsAfterXoring1344bits(UINT32 *state, const UINT8 *input)
+{
+ declareABCDE
+ unsigned int i;
+
+ xorLanesIntoState(21, state, input)
+ copyFromState(A, state)
+ rounds
+}
+#endif
+
+#endif
+
+static void KeccakInitialize()
+{
+#ifdef UseInterleaveTables
+ buildInterleaveTables();
+#endif
+}
+
+static 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
+}
+
+static void KeccakPermutation(unsigned char *state)
+{
+ // We assume the state is always stored as interleaved 32-bit words
+ KeccakPermutationOnWords((UINT32*)state);
+}
+
+#ifdef ProvideFast576
+static void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data)
+{
+ KeccakPermutationOnWordsAfterXoring576bits((UINT32*)state, data);
+}
+#endif
+
+#ifdef ProvideFast832
+static void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data)
+{
+ KeccakPermutationOnWordsAfterXoring832bits((UINT32*)state, data);
+}
+#endif
+
+#ifdef ProvideFast1024
+static void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data)
+{
+ KeccakPermutationOnWordsAfterXoring1024bits((UINT32*)state, data);
+}
+#endif
+
+#ifdef ProvideFast1088
+static void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data)
+{
+ KeccakPermutationOnWordsAfterXoring1088bits((UINT32*)state, data);
+}
+#endif
+
+#ifdef ProvideFast1152
+static void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data)
+{
+ KeccakPermutationOnWordsAfterXoring1152bits((UINT32*)state, data);
+}
+#endif
+
+#ifdef ProvideFast1344
+static void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data)
+{
+ KeccakPermutationOnWordsAfterXoring1344bits((UINT32*)state, data);
+}
+#endif
+
+static void KeccakAbsorb(unsigned char *state, const unsigned char *data, unsigned int laneCount)
+{
+ KeccakPermutationOnWordsAfterXoring((UINT32*)state, data, laneCount);
+}
+
+#ifdef ProvideFast1024
+static 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
+
+static 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..0432f1ab18
--- /dev/null
+++ b/src/3rdparty/sha3/KeccakF-1600-opt64.c
@@ -0,0 +1,508 @@
+/*
+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 <string.h>
+#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 <x86intrin.h>
+ 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 <x86intrin.h>
+ 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 <mmintrin.h>
+ 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"
+
+static void KeccakPermutationOnWords(UINT64 *state)
+{
+ declareABCDE
+#if (Unrolling != 24)
+ unsigned int i;
+#endif
+
+ copyFromState(A, state)
+ rounds
+#if defined(UseMMX)
+ _mm_empty();
+#endif
+}
+
+static 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<laneCount; j++)
+ state[j] ^= input[j];
+ copyFromState(A, state)
+ rounds
+#if defined(UseMMX)
+ _mm_empty();
+#endif
+}
+
+#ifdef ProvideFast576
+static void KeccakPermutationOnWordsAfterXoring576bits(UINT64 *state, const UINT64 *input)
+{
+ declareABCDE
+#if (Unrolling != 24)
+ unsigned int i;
+#endif
+
+ copyFromStateAndXor576bits(A, state, input)
+ rounds
+#if defined(UseMMX)
+ _mm_empty();
+#endif
+}
+#endif
+
+#ifdef ProvideFast832
+static void KeccakPermutationOnWordsAfterXoring832bits(UINT64 *state, const UINT64 *input)
+{
+ declareABCDE
+#if (Unrolling != 24)
+ unsigned int i;
+#endif
+
+ copyFromStateAndXor832bits(A, state, input)
+ rounds
+#if defined(UseMMX)
+ _mm_empty();
+#endif
+}
+#endif
+
+#ifdef ProvideFast1024
+static void KeccakPermutationOnWordsAfterXoring1024bits(UINT64 *state, const UINT64 *input)
+{
+ declareABCDE
+#if (Unrolling != 24)
+ unsigned int i;
+#endif
+
+ copyFromStateAndXor1024bits(A, state, input)
+ rounds
+#if defined(UseMMX)
+ _mm_empty();
+#endif
+}
+#endif
+
+#ifdef ProvideFast1088
+static void KeccakPermutationOnWordsAfterXoring1088bits(UINT64 *state, const UINT64 *input)
+{
+ declareABCDE
+#if (Unrolling != 24)
+ unsigned int i;
+#endif
+
+ copyFromStateAndXor1088bits(A, state, input)
+ rounds
+#if defined(UseMMX)
+ _mm_empty();
+#endif
+}
+#endif
+
+#ifdef ProvideFast1152
+static void KeccakPermutationOnWordsAfterXoring1152bits(UINT64 *state, const UINT64 *input)
+{
+ declareABCDE
+#if (Unrolling != 24)
+ unsigned int i;
+#endif
+
+ copyFromStateAndXor1152bits(A, state, input)
+ rounds
+#if defined(UseMMX)
+ _mm_empty();
+#endif
+}
+#endif
+
+#ifdef ProvideFast1344
+static void KeccakPermutationOnWordsAfterXoring1344bits(UINT64 *state, const UINT64 *input)
+{
+ declareABCDE
+#if (Unrolling != 24)
+ unsigned int i;
+#endif
+
+ copyFromStateAndXor1344bits(A, state, input)
+ rounds
+#if defined(UseMMX)
+ _mm_empty();
+#endif
+}
+#endif
+
+static void KeccakInitialize()
+{
+}
+
+static void KeccakInitializeState(unsigned char *state)
+{
+ memset(state, 0, 200);
+#ifdef UseBebigokimisa
+ ((UINT64*)state)[ 1] = ~(UINT64)0;
+ ((UINT64*)state)[ 2] = ~(UINT64)0;
+ ((UINT64*)state)[ 8] = ~(UINT64)0;
+ ((UINT64*)state)[12] = ~(UINT64)0;
+ ((UINT64*)state)[17] = ~(UINT64)0;
+ ((UINT64*)state)[20] = ~(UINT64)0;
+#endif
+}
+
+static void KeccakPermutation(unsigned char *state)
+{
+ // We assume the state is always stored as words
+ KeccakPermutationOnWords((UINT64*)state);
+}
+
+#if 0 // Unused in the Qt configuration
+static void fromBytesToWord(UINT64 *word, const UINT8 *bytes)
+{
+ unsigned int i;
+
+ *word = 0;
+ for(i=0; i<(64/8); i++)
+ *word |= (UINT64)(bytes[i]) << (8*i);
+}
+#endif
+
+#ifdef ProvideFast576
+static void KeccakAbsorb576bits(unsigned char *state, const unsigned char *data)
+{
+#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
+ KeccakPermutationOnWordsAfterXoring576bits((UINT64*)state, (const UINT64*)data);
+#else
+ UINT64 dataAsWords[9];
+ unsigned int i;
+
+ for(i=0; i<9; i++)
+ fromBytesToWord(dataAsWords+i, data+(i*8));
+ KeccakPermutationOnWordsAfterXoring576bits((UINT64*)state, dataAsWords);
+#endif
+}
+#endif
+
+#ifdef ProvideFast832
+static void KeccakAbsorb832bits(unsigned char *state, const unsigned char *data)
+{
+#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
+ KeccakPermutationOnWordsAfterXoring832bits((UINT64*)state, (const UINT64*)data);
+#else
+ UINT64 dataAsWords[13];
+ unsigned int i;
+
+ for(i=0; i<13; i++)
+ fromBytesToWord(dataAsWords+i, data+(i*8));
+ KeccakPermutationOnWordsAfterXoring832bits((UINT64*)state, dataAsWords);
+#endif
+}
+#endif
+
+#ifdef ProvideFast1024
+static void KeccakAbsorb1024bits(unsigned char *state, const unsigned char *data)
+{
+#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
+ KeccakPermutationOnWordsAfterXoring1024bits((UINT64*)state, (const UINT64*)data);
+#else
+ UINT64 dataAsWords[16];
+ unsigned int i;
+
+ for(i=0; i<16; i++)
+ fromBytesToWord(dataAsWords+i, data+(i*8));
+ KeccakPermutationOnWordsAfterXoring1024bits((UINT64*)state, dataAsWords);
+#endif
+}
+#endif
+
+#ifdef ProvideFast1088
+static void KeccakAbsorb1088bits(unsigned char *state, const unsigned char *data)
+{
+#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
+ KeccakPermutationOnWordsAfterXoring1088bits((UINT64*)state, (const UINT64*)data);
+#else
+ UINT64 dataAsWords[17];
+ unsigned int i;
+
+ for(i=0; i<17; i++)
+ fromBytesToWord(dataAsWords+i, data+(i*8));
+ KeccakPermutationOnWordsAfterXoring1088bits((UINT64*)state, dataAsWords);
+#endif
+}
+#endif
+
+#ifdef ProvideFast1152
+static void KeccakAbsorb1152bits(unsigned char *state, const unsigned char *data)
+{
+#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
+ KeccakPermutationOnWordsAfterXoring1152bits((UINT64*)state, (const UINT64*)data);
+#else
+ UINT64 dataAsWords[18];
+ unsigned int i;
+
+ for(i=0; i<18; i++)
+ fromBytesToWord(dataAsWords+i, data+(i*8));
+ KeccakPermutationOnWordsAfterXoring1152bits((UINT64*)state, dataAsWords);
+#endif
+}
+#endif
+
+#ifdef ProvideFast1344
+static void KeccakAbsorb1344bits(unsigned char *state, const unsigned char *data)
+{
+#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN)
+ KeccakPermutationOnWordsAfterXoring1344bits((UINT64*)state, (const UINT64*)data);
+#else
+ UINT64 dataAsWords[21];
+ unsigned int i;
+
+ for(i=0; i<21; i++)
+ fromBytesToWord(dataAsWords+i, data+(i*8));
+ KeccakPermutationOnWordsAfterXoring1344bits((UINT64*)state, dataAsWords);
+#endif
+}
+#endif
+
+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);
+#else
+ UINT64 dataAsWords[25];
+ unsigned int i;
+
+ for(i=0; i<laneCount; i++)
+ fromBytesToWord(dataAsWords+i, data+(i*8));
+ KeccakPermutationOnWordsAfterXoring((UINT64*)state, dataAsWords, laneCount);
+#endif
+}
+
+#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
+static 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
+
+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);
+#else
+ unsigned int i;
+
+ for(i=0; i<laneCount; i++)
+ fromWordToBytes(data+(i*8), ((const UINT64*)state)[i]);
+#endif
+#ifdef UseBebigokimisa
+ if (laneCount > 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..e530a11db5
--- /dev/null
+++ b/src/3rdparty/sha3/KeccakNISTInterface.c
@@ -0,0 +1,82 @@
+/*
+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 <string.h>
+//#include "KeccakNISTInterface.h"
+#include "KeccakF-1600-interface.h"
+
+static 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;
+}
+
+static HashReturn Update(hashState *state, const BitSequence *data, DataLength databitlen)
+{
+ if ((databitlen % 8) == 0)
+ return (HashReturn) Absorb((spongeState*)state, data, databitlen);
+ else {
+ 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 (HashReturn) Absorb((spongeState*)state, &lastByte, databitlen % 8);
+ }
+ else
+ return ret;
+ }
+}
+
+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;
+ 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;
+}
+#endif
diff --git a/src/3rdparty/sha3/KeccakNISTInterface.h b/src/3rdparty/sha3/KeccakNISTInterface.h
new file mode 100755
index 0000000000..cd85f24aa7
--- /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.
+ */
+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().
+ * @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.
+ */
+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.
+ * 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.
+ */
+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.
+ * @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.
+ */
+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
new file mode 100755
index 0000000000..6f3da95dbb
--- /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 <string.h>
+#include "KeccakSponge.h"
+#include "KeccakF-1600-interface.h"
+#ifdef KeccakReference
+#include "displayIntermediateValues.h"
+#endif
+
+static 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;
+}
+
+static 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;
+}
+
+static 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; j<wholeBlocks; j++, curData+=576/8) {
+ #ifdef KeccakReference
+ displayBytes(1, "Block to be absorbed", curData, state->rate/8);
+ #endif
+ KeccakAbsorb576bits(state->state, curData);
+ }
+ }
+ else
+#endif
+#ifdef ProvideFast832
+ if (state->rate == 832) {
+ for(j=0; j<wholeBlocks; j++, curData+=832/8) {
+ #ifdef KeccakReference
+ displayBytes(1, "Block to be absorbed", curData, state->rate/8);
+ #endif
+ KeccakAbsorb832bits(state->state, curData);
+ }
+ }
+ else
+#endif
+#ifdef ProvideFast1024
+ if (state->rate == 1024) {
+ for(j=0; j<wholeBlocks; j++, curData+=1024/8) {
+ #ifdef KeccakReference
+ displayBytes(1, "Block to be absorbed", curData, state->rate/8);
+ #endif
+ KeccakAbsorb1024bits(state->state, curData);
+ }
+ }
+ else
+#endif
+#ifdef ProvideFast1088
+ if (state->rate == 1088) {
+ for(j=0; j<wholeBlocks; j++, curData+=1088/8) {
+ #ifdef KeccakReference
+ displayBytes(1, "Block to be absorbed", curData, state->rate/8);
+ #endif
+ KeccakAbsorb1088bits(state->state, curData);
+ }
+ }
+ else
+#endif
+#ifdef ProvideFast1152
+ if (state->rate == 1152) {
+ for(j=0; j<wholeBlocks; j++, curData+=1152/8) {
+ #ifdef KeccakReference
+ displayBytes(1, "Block to be absorbed", curData, state->rate/8);
+ #endif
+ KeccakAbsorb1152bits(state->state, curData);
+ }
+ }
+ else
+#endif
+#ifdef ProvideFast1344
+ if (state->rate == 1344) {
+ for(j=0; j<wholeBlocks; j++, curData+=1344/8) {
+ #ifdef KeccakReference
+ displayBytes(1, "Block to be absorbed", curData, state->rate/8);
+ #endif
+ KeccakAbsorb1344bits(state->state, curData);
+ }
+ }
+ else
+#endif
+ {
+ for(j=0; j<wholeBlocks; j++, curData+=state->rate/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;
+}
+
+static 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;
+}
+
+static 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..a545cacb30
--- /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.
+ */
+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().
+ * @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.
+ */
+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
+ * 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.
+ */
+static 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 <sys/isa_defs.h>
+#elif defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __NetBSD__ )
+# include <sys/endian.h>
+#elif defined( BSD ) && ( BSD >= 199103 ) || defined( __APPLE__ ) || \
+ defined( __CYGWIN32__ ) || defined( __DJGPP__ ) || defined( __osf__ )
+# include <machine/endian.h>
+#elif defined( __linux__ ) || defined( __GNUC__ ) || defined( __GNU_LIBRARY__ )
+# if !defined( __MINGW32__ ) && !defined( _AIX )
+# include <endian.h>
+# if !defined( __BEOS__ )
+# include <byteswap.h>
+# 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
diff --git a/src/android/android.pro b/src/android/android.pro
new file mode 100644
index 0000000000..a5db78e32f
--- /dev/null
+++ b/src/android/android.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = jar 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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="org.qtproject.qt5.android">
+ <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
+</manifest>
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/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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">QtJar</string>
+</resources>
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 <bogdan@kde.org>
+** 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<String> 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<Runnable> 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 <bogdan@kde.org>
+** 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 <bogdan@kde.org>
+** 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 <bogdan@kde.org>
+** 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..7cb3fdff45
--- /dev/null
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -0,0 +1,577 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+** 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<Runnable> m_lostActions = new ArrayList<Runnable>(); // 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<String> 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<String> 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<Runnable> 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-9
+ static private int getAction(int index, MotionEvent event)
+ {
+ int action = event.getActionMasked();
+ 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;
+ }
+ 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-9
+
+ static public void sendTouchEvent(MotionEvent event, int id)
+ {
+ //@ANDROID-5
+ touchBegin(id);
+ for (int i=0;i<event.getPointerCount();i++) {
+ touchAdd(id,
+ event.getPointerId(i),
+ getAction(i, event),
+ i == 0,
+ (int)event.getX(i),
+ (int)event.getY(i),
+ event.getSize(i),
+ event.getPressure(i));
+ }
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ touchEnd(id,0);
+ break;
+
+ case MotionEvent.ACTION_UP:
+ touchEnd(id,2);
+ break;
+
+ default:
+ touchEnd(id,1);
+ }
+ //@ANDROID-5
+
+ 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) > 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 <bogdan@kde.org>
+** 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 <bogdan@kde.org>
+** 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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="org.kde.necessitas.example">
+ <application android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="@string/app_name">
+ <activity android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="@string/app_name" android:configChanges="orientation|locale|fontScale|keyboard|keyboardHidden" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
+ <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
+ <meta-data android:name="android.app.lib_name" android:value=""/>
+ <!-- Messages maps -->
+ <meta-data android:name="android.app.ministro_not_found_msg" android:value="@string/ministro_not_found_msg"/>
+ <meta-data android:name="android.app.ministro_needed_msg" android:value="@string/ministro_needed_msg"/>
+ <meta-data android:name="android.app.fatal_error_msg" android:value="@string/fatal_error_msg"/>
+ <!-- Messages maps -->
+ <!-- Splash screen -->
+ <meta-data android:name="android.app.splash_screen" android:resource="@layout/splash"/>
+ <!-- Splash screen -->
+ </activity>
+ </application>
+ <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
+ <uses-permission android:name="android.permission.INTERNET"/>
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+</manifest>
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
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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_gravity="center"
+ >
+ <ImageView
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:scaleType="fitXY"
+ />
+</LinearLayout>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Ministro-Dienst wurde nicht gefunden.\nAnwendung kann nicht gestartet werden</string>
+ <string name="ministro_needed_msg">Diese Anwendung benötigt den Ministro-Dienst. Möchten Sie ihn installieren?</string>
+ <string name="fatal_error_msg">In Ihrer Anwendung ist ein schwerwiegender Fehler aufgetreten, sie kann nicht fortgesetzt werden</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Δεν ήταν δυνατή η εύρεση της υπηρεσίας Ministro. Δεν είναι δυνατή η εκκίνηση της εφαρμογής.</string>
+ <string name="ministro_needed_msg">Η εφαρμογή απαιτεί την υπηρεσία Ministro. Να εγκατασταθεί η υπηρεσία?</string>
+ <string name="fatal_error_msg">Παρουσιάστηκε ένα κρίσιμο σφάλμα και η εφαρμογή δεν μπορεί να συνεχίσει.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Servicio Ministro inesistente. Imposible ejecutar la aplicación.</string>
+ <string name="ministro_needed_msg">Esta aplicación requiere el servicio Ministro. Instalarlo?</string>
+ <string name="fatal_error_msg">La aplicación ha causado un error grave y no es posible continuar.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Ei suuda leida Ministro teenust.\nProgrammi ei saa käivitada.</string>
+ <string name="ministro_needed_msg">See programm vajab Ministro teenust.\nKas soovite paigaldada?</string>
+ <string name="fatal_error_msg">Programmiga juhtus fataalne viga.\nKahjuks ei saa jätkata.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">سرویس Ministro را پیدا نمی‌کند. برنامه نمی‌تواند آغاز شود.</string>
+ <string name="ministro_needed_msg">این نرم‌افزار به سرویس Ministro احتیاج دارد. آیا دوست دارید آن را نصب کنید؟</string>
+ <string name="fatal_error_msg">خطایی اساسی در برنامه‌تان رخ داد و اجرای برنامه نمی‌تواند ادامه یابد.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Le service Ministro est introuvable.\nL\'application ne peut pas démarrer.</string>
+ <string name="ministro_needed_msg">Cette application requiert le service Ministro. Voulez-vous l\'installer?</string>
+ <string name="fatal_error_msg">Votre application a rencontré une erreur fatale et ne peut pas continuer.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Layanan Ministro tidak bisa ditemukan.\nAplikasi tidak bisa dimulai.</string>
+ <string name="ministro_needed_msg">Aplikasi ini membutuhkan layanan Ministro. Apakah Anda ingin menginstalnya?</string>
+ <string name="fatal_error_msg">Aplikasi Anda mengalami kesalahan fatal dan tidak dapat melanjutkan.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Servizio Ministro inesistente. Impossibile eseguire \nl\'applicazione.</string>
+ <string name="ministro_needed_msg">Questa applicazione richiede il servizio Ministro.Installarlo?</string>
+ <string name="fatal_error_msg">L\'applicazione ha provocato un errore grave e non puo\' continuare.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Ministroサービスが見つかりません。\nアプリケーションが起動できません。</string>
+ <string name="ministro_needed_msg">このアプリケーションにはMinistroサービスが必要です。 インストールしてもよろしいですか?</string>
+ <string name="fatal_error_msg">アプリケーションで致命的なエラーが発生したため続行できません。</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Tidak jumpa servis Ministro.\nAplikasi tidak boleh dimulakan.</string>
+ <string name="ministro_needed_msg">Aplikasi ini memerlukan servis Ministro. Adakah anda ingin pasang servis itu?</string>
+ <string name="fatal_error_msg">Aplikasi anda menemui ralat muat dan tidak boleh diteruskan.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Kan ikke finne tjenesten Ministro. Applikasjonen kan ikke starte.</string>
+ <string name="ministro_needed_msg">Denne applikasjonen krever tjenesten Ministro. Vil du installere denne?</string>
+ <string name="fatal_error_msg">Applikasjonen fikk en kritisk feil og kan ikke fortsette</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">De Ministro service is niet gevonden.\nDe applicatie kan niet starten.</string>
+ <string name="ministro_needed_msg">Deze applicatie maakt gebruik van de Ministro service. Wilt u deze installeren?</string>
+ <string name="fatal_error_msg">Er is een fatale fout in de applicatie opgetreden. De applicatie kan niet verder gaan.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Usługa Ministro nie została znaleziona.\nAplikacja nie może zostać uruchomiona.</string>
+ <string name="ministro_needed_msg">Aplikacja wymaga usługi Ministro. Czy chcesz ją zainstalować?</string>
+ <string name="fatal_error_msg">Wystąpił błąd krytyczny. Aplikacja zostanie zamknięta.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Não foi possível encontrar o serviço Ministro.\nA aplicação não pode iniciar.</string>
+ <string name="ministro_needed_msg">Essa aplicação requer o serviço Ministro. Gostaria de instalá-lo?</string>
+ <string name="fatal_error_msg">Sua aplicação encontrou um erro fatal e não pode continuar.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Serviciul Ministro nu poate fi găsit.\nAplicaţia nu poate porni.</string>
+ <string name="ministro_needed_msg">Această aplicaţie necesită serviciul Ministro.\nDoriţi să-l instalaţi?</string>
+ <string name="fatal_error_msg">Aplicaţia dumneavoastră a întâmpinat o eroare fatală şi nu poate continua.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Ministro servise nije pronađen. Aplikacija ne može biti pokrenuta.</string>
+ <string name="ministro_needed_msg">Ova aplikacija zahteva Ministro servis. Želite li da ga instalirate?</string>
+ <string name="fatal_error_msg">Vaša aplikacija je naišla na fatalnu grešku i ne može nastaviti sa radom.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">Сервис Ministro не найден.\nПриложение нельзя запустить.</string>
+ <string name="ministro_needed_msg">Этому приложению необходим сервис Ministro. Вы хотите его установить?</string>
+ <string name="fatal_error_msg">Ваше приложение столкнулось с фатальной ошибкой и не может более работать.</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">无法找到Ministro服务。\n应用程序无法启动。</string>
+ <string name="ministro_needed_msg">此应用程序需要Ministro服务。您想安装它吗?</string>
+ <string name="fatal_error_msg">您的应用程序遇到一个致命错误导致它无法继续。</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="ministro_not_found_msg">無法找到Ministro服務。\n應用程序無法啟動。</string>
+ <string name="ministro_needed_msg">此應用程序需要Ministro服務。您想安裝它嗎?</string>
+ <string name="fatal_error_msg">您的應用程序遇到一個致命錯誤導致它無法繼續。</string>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <array name="qt_libs">
+ <item>QtCore</item>
+ <item>QtGui</item>
+ </array>
+ <array name="bundled_libs"/>
+</resources>
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 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <string name="app_name"></string>
+ <string name="ministro_not_found_msg">Can\'t find Ministro service.\nThe application can\'t start.</string>
+ <string name="ministro_needed_msg">This application requires Ministro service. Would you like to install it?</string>
+ <string name="fatal_error_msg">Your application encountered a fatal error and cannot continue.</string>
+</resources>
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 <bogdan@kde.org>
+ 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 <bogdan@kde.org>
+ 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 <bogdan@kde.org>
+ 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<String> libs = new ArrayList<String>();
+ 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<String> libraryList= new ArrayList<String>();
+
+ 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<m_qtLibs.length;i++)
+ libraryList.add(localPrefix+"lib/lib"+m_qtLibs[i]+".so");
+ }
+
+ if (getIntent().getExtras().containsKey("load_local_libs")) {
+ String[] extraLibs=getIntent().getExtras().getString("load_local_libs").split(":");
+ for (String lib:extraLibs) {
+ if (lib.length() > 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 <bogdan@kde.org>
+ 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<String, ArrayList<Method>> m_delegateMethods= new HashMap<String, ArrayList<Method>>();
+ 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<Method> delegateMethods = new ArrayList<Method>();
+ for (Method m : listener.getClass().getMethods()) {
+ if (m.getDeclaringClass().getName().startsWith("org.qtproject.qt5.android"))
+ delegateMethods.add(m);
+ }
+
+ ArrayList<Field> applicationFields = new ArrayList<Field>();
+ 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<Method> delegateSet = new ArrayList<Method>();
+ 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<elements.length;it++)
+ if (elements[it].getClassName().equals(activityClassName)) {
+ stackDeep = it;
+ break;
+ }
+ }
+ final String methodName=elements[stackDeep].getMethodName();
+ if (-1 == stackDeep || !m_delegateMethods.containsKey(methodName))
+ return result;
+
+ for (Method m : m_delegateMethods.get(methodName)) {
+ if (m.getParameterTypes().length == args.length) {
+ result.methodReturns = invokeDelegateMethod(m, args);
+ result.invoked = true;
+ return result;
+ }
+ }
+ return result;
+ }
+
+ public static Object invokeDelegateMethod(Method m, Object... args)
+ {
+ try {
+ return m.invoke(m_delegateObject, args);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
diff --git a/src/android/java/version.xml b/src/android/java/version.xml
new file mode 100644
index 0000000000..1cd8eb31fe
--- /dev/null
+++ b/src/android/java/version.xml
@@ -0,0 +1,8 @@
+<version value="3">
+ <ignore>
+ <file>AndroidManifest.xml</file>
+ <file>libs.xml</file>
+ <file>logo.png</file>
+ <file>icon.png</file>
+ </ignore>
+</version>
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 <GLES2/gl2.h>"
-!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/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 <Friedemann.Kleint@digia.com>
+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 \
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 <QtCore/qglobal.h>
-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 <QtCore/qexception.h>
-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.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/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 <QtConcurrent/qtconcurrentfilterkernel.h>
#include <QtConcurrent/qtconcurrentfunctionwrappers.h>
-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 <QtConcurrent/qtconcurrentmapkernel.h>
#include <QtConcurrent/qtconcurrentreducekernel.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -343,7 +342,6 @@ inline ThreadEngineStarter<ResultType> 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<QStringList, U(C::*)() const>
#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 <iterator>
-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.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<int> ints = QtConcurrent::blockingMapped<QList<int> >(beginIterator, endIterator, fn);
\endcode
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 <QtConcurrent/qtconcurrentfunctionwrappers.h>
#include <QtCore/qstringlist.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -312,7 +311,6 @@ typename QtPrivate::MapResultType<Iterator, MapFunctor>::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..6817cd3e29 100644
--- a/src/concurrent/qtconcurrentmapkernel.h
+++ b/src/concurrent/qtconcurrentmapkernel.h
@@ -49,7 +49,6 @@
#include <QtConcurrent/qtconcurrentiteratekernel.h>
#include <QtConcurrent/qtconcurrentreducekernel.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -81,7 +80,7 @@ public:
runIteration(it, i, 0);
advance(it, 1);
}
-
+
return false;
}
};
@@ -265,7 +264,6 @@ inline ThreadEngineStarter<ResultType> 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 <QtCore/qvector.h>
#include <QtCore/qalgorithms.h>
-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..dcf4b92319 100644
--- a/src/concurrent/qtconcurrentreducekernel.h
+++ b/src/concurrent/qtconcurrentreducekernel.h
@@ -54,7 +54,6 @@
#include <QtCore/qthreadpool.h>
#include <QtCore/qvector.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -140,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())
{ }
@@ -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.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<T> QtConcurrent::run(Function function, ...);
\relates <QtConcurrentRun>
-
+
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/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 <QtConcurrent/qtconcurrentrunbase.h>
#include <QtConcurrent/qtconcurrentstoredfunctioncall.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -340,7 +339,6 @@ QFuture<T> 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 <QtCore/qrunnable.h>
#include <QtCore/qthreadpool.h>
-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 <QtConcurrent/qtconcurrentrunbase.h>
-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 <QtCore/qatomic.h>
#include <QtCore/qsemaphore.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -273,7 +272,6 @@ inline ThreadEngineStarter<typename ThreadEngine::ResultType> startThreadEngine(
#endif //Q_QDOC
QT_END_NAMESPACE
-QT_END_HEADER
#endif // QT_NO_CONCURRENT
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/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 <QtCore/qobject.h>
-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 <QtCore/qabstractanimation.h>
-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 <QtCore/qanimationgroup.h>
-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 <QtCore/qanimationgroup.h>
-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 <QtCore/qvariantanimation.h>
-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.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/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 <QtCore/qanimationgroup.h>
-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.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/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 <QtCore/qvariant.h>
#include <QtCore/qpair.h>
-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..71cb112d47 100644
--- a/src/corelib/arch/qatomic_alpha.h
+++ b/src/corelib/arch/qatomic_alpha.h
@@ -44,10 +44,17 @@
#include <QtCore/qoldbasicatomic.h>
-QT_BEGIN_HEADER
-
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()
@@ -517,6 +524,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::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..e0a50b3c24 100644
--- a/src/corelib/arch/qatomic_armv5.h
+++ b/src/corelib/arch/qatomic_armv5.h
@@ -45,15 +45,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
-
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
@@ -167,12 +164,20 @@ __asm T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue) Q_DECL
template<> template <typename T> 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
@@ -190,6 +195,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..7f5939e391 100644
--- a/src/corelib/arch/qatomic_armv6.h
+++ b/src/corelib/arch/qatomic_armv6.h
@@ -45,15 +45,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
-
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
@@ -729,6 +726,4 @@ void QBasicAtomicOps<size>::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..1929ae0ab3 100644
--- a/src/corelib/arch/qatomic_armv7.h
+++ b/src/corelib/arch/qatomic_armv7.h
@@ -54,11 +54,12 @@
#if 0
// silence syncqt warnings
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_END_NAMESPACE
-QT_END_HEADER
+
+#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 24c9ea77e1..79519308a4 100644
--- a/src/corelib/arch/qatomic_bfin.h
+++ b/src/corelib/arch/qatomic_bfin.h
@@ -44,10 +44,17 @@
#include <QtCore/qoldbasicatomic.h>
-QT_BEGIN_HEADER
-
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()
@@ -340,6 +347,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::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..160e0abdf3 100644
--- a/src/corelib/arch/qatomic_bootstrap.h
+++ b/src/corelib/arch/qatomic_bootstrap.h
@@ -45,15 +45,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
-
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
@@ -98,6 +95,4 @@ template <typename T> struct QAtomicOps: QGenericAtomicOps<QAtomicOps<T> >
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..3119edaf45 100644
--- a/src/corelib/arch/qatomic_cxx11.h
+++ b/src/corelib/arch/qatomic_cxx11.h
@@ -45,14 +45,12 @@
#include <QtCore/qgenericatomic.h>
#include <atomic>
-QT_BEGIN_HEADER
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
@@ -247,6 +245,5 @@ template <typename T> 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..bd296053e5 100644
--- a/src/corelib/arch/qatomic_gcc.h
+++ b/src/corelib/arch/qatomic_gcc.h
@@ -44,14 +44,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
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
@@ -132,6 +130,4 @@ template <typename T> struct QAtomicOps: QGenericAtomicOps<QAtomicOps<T> >
};
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..ed72036076 100644
--- a/src/corelib/arch/qatomic_ia64.h
+++ b/src/corelib/arch/qatomic_ia64.h
@@ -45,15 +45,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
-
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
@@ -222,28 +219,28 @@ inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
{
register int expectedValueCopy = expectedValue;
- return (static_cast<int>(_InterlockedCompareExchange(&_q_value,
- newValue,
- expectedValueCopy))
- == expectedValue);
+ return (static_cast<int>(_InterlockedCompareExchange(&_q_value,
+ newValue,
+ expectedValueCopy))
+ == expectedValue);
}
inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
{
register int expectedValueCopy = expectedValue;
- return (static_cast<int>(_InterlockedCompareExchange_acq(reinterpret_cast<volatile uint *>(&_q_value),
- newValue,
- expectedValueCopy))
- == expectedValue);
+ return (static_cast<int>(_InterlockedCompareExchange_acq(reinterpret_cast<volatile uint *>(&_q_value),
+ newValue,
+ expectedValueCopy))
+ == expectedValue);
}
inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
{
register int expectedValueCopy = expectedValue;
- return (static_cast<int>(_InterlockedCompareExchange_rel(reinterpret_cast<volatile uint *>(&_q_value),
- newValue,
- expectedValueCopy))
- == expectedValue);
+ return (static_cast<int>(_InterlockedCompareExchange_rel(reinterpret_cast<volatile uint *>(&_q_value),
+ newValue,
+ expectedValueCopy))
+ == expectedValue);
}
inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
@@ -289,10 +286,10 @@ template <typename T>
Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
{
register T *expectedValueCopy = expectedValue;
- return (_InterlockedCompareExchangePointer(reinterpret_cast<void * volatile*>(&_q_value),
- newValue,
- expectedValueCopy)
- == expectedValue);
+ return (_InterlockedCompareExchangePointer(reinterpret_cast<void * volatile*>(&_q_value),
+ newValue,
+ expectedValueCopy)
+ == expectedValue);
}
template <typename T>
@@ -304,7 +301,7 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::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));
}
@@ -1089,6 +1086,4 @@ T QBasicAtomicOps<size>::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..f8cfc8ce5b 100644
--- a/src/corelib/arch/qatomic_integrity.h
+++ b/src/corelib/arch/qatomic_integrity.h
@@ -45,10 +45,17 @@
#include <QtCore/qoldbasicatomic.h>
#include <INTEGRITY.h>
-QT_BEGIN_HEADER
-
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<Address *>(const_cast<int *>(a))
#define qt_p2addr(a) reinterpret_cast<Address *>(const_cast<void *>(a))
#define qt_addr(a) reinterpret_cast<Address>(a)
@@ -284,7 +291,5 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::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..7716750332 100644
--- a/src/corelib/arch/qatomic_mips.h
+++ b/src/corelib/arch/qatomic_mips.h
@@ -45,15 +45,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
-
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
@@ -362,6 +359,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..4f91e3d9da 100644
--- a/src/corelib/arch/qatomic_msvc.h
+++ b/src/corelib/arch/qatomic_msvc.h
@@ -214,14 +214,12 @@ extern "C" {
////////////////////////////////////////////////////////////////////////////////////////////////////
-QT_BEGIN_HEADER
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
@@ -383,6 +381,4 @@ inline T *QAtomicOps<T *>::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..ad1c619d56 100644
--- a/src/corelib/arch/qatomic_power.h
+++ b/src/corelib/arch/qatomic_power.h
@@ -44,10 +44,17 @@
#include <QtCore/qoldbasicatomic.h>
-QT_BEGIN_HEADER
-
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()
@@ -511,6 +518,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::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..0469f44e5f 100644
--- a/src/corelib/arch/qatomic_s390.h
+++ b/src/corelib/arch/qatomic_s390.h
@@ -44,10 +44,17 @@
#include <QtCore/qoldbasicatomic.h>
-QT_BEGIN_HEADER
-
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()
@@ -423,6 +430,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::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..08f75e44f2 100644
--- a/src/corelib/arch/qatomic_sh4a.h
+++ b/src/corelib/arch/qatomic_sh4a.h
@@ -44,14 +44,15 @@
#include <QtCore/qoldbasicatomic.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
QT_END_NAMESPACE
-QT_END_HEADER
+#if 0
+#pragma qt_sync_skip_header_check
+#pragma qt_sync_stop_processing
+#endif
#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
diff --git a/src/corelib/arch/qatomic_sparc.h b/src/corelib/arch/qatomic_sparc.h
index 1bf625fbb1..8aea33ce85 100644
--- a/src/corelib/arch/qatomic_sparc.h
+++ b/src/corelib/arch/qatomic_sparc.h
@@ -44,10 +44,17 @@
#include <QtCore/qoldbasicatomic.h>
-QT_BEGIN_HEADER
-
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
@@ -522,6 +529,4 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::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..03c7d2eee8 100644
--- a/src/corelib/arch/qatomic_unix.h
+++ b/src/corelib/arch/qatomic_unix.h
@@ -44,14 +44,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
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
@@ -112,6 +110,4 @@ struct QAtomicOps<T *> : QGenericAtomicOps<QAtomicOps<T *> >
};
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 a8664cf752..57e3b6a32b 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 <QtCore/qatomic_power.h>
#else // generic implementation with taskLock()
@@ -56,14 +54,28 @@ QT_BEGIN_HEADER
# include <vxWorksCommon.h>
# include <taskLib.h>
#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
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()
@@ -315,6 +327,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..f8180ad9d6 100644
--- a/src/corelib/arch/qatomic_x86.h
+++ b/src/corelib/arch/qatomic_x86.h
@@ -45,15 +45,12 @@
#include <QtCore/qgenericatomic.h>
-QT_BEGIN_HEADER
-
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
@@ -423,6 +420,4 @@ template <> struct QBasicAtomicOps<8>: QGenericAtomicOps<QBasicAtomicOps<8> >
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QATOMIC_X86_H
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/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;
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/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp
index 0e671518ef..1a5c9f6766 100644
--- a/src/corelib/codecs/qtextcodec.cpp
+++ b/src/corelib/codecs/qtextcodec.cpp
@@ -89,7 +89,7 @@
#include <stdlib.h>
#include <ctype.h>
#include <locale.h>
-#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 <langinfo.h>
#endif
@@ -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;
}
/*!
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 <QtCore/qstring.h>
#include <QtCore/qlist.h>
-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/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 4462203a11..3b7eb11229 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)
@@ -63,10 +69,19 @@ 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_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 cmake_umbrella_config_version_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
diff --git a/src/corelib/doc/snippets/code/doc_src_properties.cpp b/src/corelib/doc/snippets/code/doc_src_properties.cpp
index 9a25918d47..7a70200cce 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/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_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<int, QVariant> m_customData;
+};
+//! [12]
+
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 cbb5a9db5d..c349a6dbba 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/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 <lpapp@kde.org>
+** 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/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/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/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/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 <euroelessar@yandex.ru>
+** 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 <QtCore>
+
+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/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<QKeyEvent *>(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<StringEvent*>(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 66325ca6c0..721b98c0f7 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
+ \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
@@ -114,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.
@@ -256,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/global.pri b/src/corelib/global/global.pri
index 01756c8419..6ac32cd35d 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 \
@@ -19,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/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
index 15229e03a0..e547d58c2e 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
@@ -179,6 +183,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 +821,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)"
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 <byteswap.h>
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -386,6 +384,4 @@ template <> inline qint8 qbswap<qint8>(qint8 source)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QENDIAN_H
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index 7ae4863da3..daf853b916 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
@@ -235,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 a97309b876..43db585643 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
@@ -318,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: ???
@@ -509,7 +516,7 @@ SeeAlso: ???
Feature: WHATSTHIS
Description: Supports displaying "What's this" help.
Section: Widgets
-Requires: TOOLBUTTON
+Requires: TOOLBUTTON
Name: QWhatsThis
SeeAlso: ???
@@ -629,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: ???
@@ -1023,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/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 <QtCore/qtypeinfo.h>
#include <QtCore/qtypetraits.h>
-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.cpp b/src/corelib/global/qglobal.cpp
index f0fb9c1a02..c591cc5b49 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 <envLib.h>
#endif
@@ -2193,6 +2193,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
@@ -2219,6 +2223,39 @@ bool qputenv(const char *varName, const QByteArray& value)
#endif
}
+/*!
+ \relates <QtGlobal>
+
+ 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)
@@ -2814,8 +2851,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/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 13bdc7553f..c45ad12e99 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -45,11 +45,11 @@
#include <stddef.h>
-#define QT_VERSION_STR "5.0.2"
+#define QT_VERSION_STR "5.1.0"
/*
QT_VERSION is (major << 16) + (minor << 8) + patch.
*/
-#define QT_VERSION 0x050002
+#define QT_VERSION 0x050100
/*
can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0))
*/
@@ -151,6 +151,7 @@ namespace QT_NAMESPACE {}
#endif /* __cplusplus */
+// ### Qt6: remove me.
#define QT_BEGIN_HEADER
#define QT_END_HEADER
@@ -158,7 +159,6 @@ namespace QT_NAMESPACE {}
# define QT_LARGEFILE_SUPPORT 64
#endif
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
/*
@@ -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;
@@ -512,6 +512,16 @@ template <typename T>
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)
*/
@@ -664,125 +674,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 <typename T>
-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<TYPE > thisGlobalStatic(&thisVariable); \
- return thisGlobalStatic.pointer; \
- }
-
-#define Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \
- static TYPE *NAME() \
- { \
- static TYPE thisVariable ARGS; \
- static QGlobalStatic<TYPE > thisGlobalStatic(&thisVariable); \
- return thisGlobalStatic.pointer; \
- }
-
-#define Q_GLOBAL_STATIC_WITH_INITIALIZER(TYPE, NAME, INITIALIZER) \
- static TYPE *NAME() \
- { \
- static TYPE thisVariable; \
- static QGlobalStatic<TYPE > thisGlobalStatic(0); \
- if (!thisGlobalStatic.pointer) { \
- TYPE *x = thisGlobalStatic.pointer = &thisVariable; \
- INITIALIZER; \
- } \
- return thisGlobalStatic.pointer; \
- }
-
-#else
-
-// forward declaration, since qatomic.h needs qglobal.h
-template <typename T> class QBasicAtomicPointer;
-
-// POD for Q_GLOBAL_STATIC
-template <typename T>
-class QGlobalStatic
-{
-public:
- QBasicAtomicPointer<T> pointer;
- bool destroyed;
-};
-
-// Created as a function-local static to delete a QGlobalStatic<T>
-template <typename T>
-class QGlobalStaticDeleter
-{
-public:
- QGlobalStatic<T> &globalStatic;
- QGlobalStaticDeleter(QGlobalStatic<T> &_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<TYPE > 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<TYPE > cleanup(thisGlobalStatic); \
- } \
- return thisGlobalStatic.pointer.load(); \
- }
-
-#define Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \
- static TYPE *NAME() \
- { \
- static QGlobalStatic<TYPE > 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<TYPE > cleanup(thisGlobalStatic); \
- } \
- return thisGlobalStatic.pointer.load(); \
- }
-
-#define Q_GLOBAL_STATIC_WITH_INITIALIZER(TYPE, NAME, INITIALIZER) \
- static TYPE *NAME() \
- { \
- static QGlobalStatic<TYPE > thisGlobalStatic \
- = { Q_BASIC_ATOMIC_INITIALIZER(0), false }; \
- if (!thisGlobalStatic.pointer.load() && !thisGlobalStatic.destroyed) { \
- QScopedPointer<TYPE > x(new TYPE); \
- INITIALIZER; \
- if (thisGlobalStatic.pointer.testAndSetOrdered(0, x.data())) { \
- static QGlobalStaticDeleter<TYPE > 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)));
@@ -1053,6 +944,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;
@@ -1087,7 +979,8 @@ template <typename T> struct QEnableIf<true, T> { typedef T Type; };
}
QT_END_NAMESPACE
-QT_END_HEADER
+// Q_GLOBAL_STATIC
+#include <QtCore/qglobalstatic.h>
// qDebug and friends
#include <QtCore/qlogging.h>
diff --git a/src/corelib/global/qglobalstatic.cpp b/src/corelib/global/qglobalstatic.cpp
new file mode 100644
index 0000000000..8474d132b4
--- /dev/null
+++ b/src/corelib/global/qglobalstatic.cpp
@@ -0,0 +1,524 @@
+/****************************************************************************
+**
+** 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. 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
+ 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
new file mode 100644
index 0000000000..a6268e057e
--- /dev/null
+++ b/src/corelib/global/qglobalstatic.h
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** 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 <QtCore/qglobal.h>
+
+#ifndef QGLOBALSTATIC_H
+#define QGLOBALSTATIC_H
+
+#include <QtCore/qatomic.h>
+
+QT_BEGIN_NAMESPACE
+
+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 \
+ { if (guard.load() == QtGlobalStatic::Initialized) \
+ 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 <QtCore/qmutex.h>
+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 <typename T, T *(&innerFunction)(), QBasicAtomicInt &guard>
+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<TYPE, \
+ Q_QGS_ ## NAME::innerFunction, \
+ Q_QGS_ ## NAME::guard> NAME;
+
+#define Q_GLOBAL_STATIC(TYPE, NAME) \
+ Q_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ())
+
+QT_END_NAMESPACE
+#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 <QtCore/qstring.h>
#include <QtCore/qdatetime.h>
-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.cpp b/src/corelib/global/qlogging.cpp
index 60ba19e625..f95e1e9447 100644
--- a/src/corelib/global/qlogging.cpp
+++ b/src/corelib/global/qlogging.cpp
@@ -57,6 +57,10 @@
#include <slog2.h>
#endif
+#ifdef Q_OS_ANDROID
+#include <android/log.h>
+#endif
+
#include <stdio.h>
QT_BEGIN_NAMESPACE
@@ -72,8 +76,8 @@ static bool isFatal(QtMsgType msgType)
if (msgType == QtFatalMsg)
return true;
- if (msgType == QtWarningMsg) {
- static bool fatalWarnings = qEnvironmentVariableIsSet("QT_FATAL_WARNINGS");
+ if (msgType == QtWarningMsg || msgType == QtCriticalMsg) {
+ static bool fatalWarnings = !qEnvironmentVariableIsEmpty("QT_FATAL_WARNINGS");
return fatalWarnings;
}
@@ -115,6 +119,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 +133,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)
/*!
@@ -165,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);
@@ -521,6 +525,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}";
@@ -607,6 +616,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("%{"))
@@ -630,23 +643,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<const wchar_t*>(error.utf16()));
- continue;
-#elif defined(Q_OS_WIN) && defined(QT_BUILD_CORE_LIB)
- if (usingWinMain) {
- OutputDebugString(reinterpret_cast<const wchar_t*>(error.utf16()));
- continue;
- }
-#endif
- fprintf(stderr, "%s", error.toLocal8Bit().constData());
- fflush(stderr);
}
} else {
char *literal = new char[lexeme.size() + 1];
@@ -656,6 +674,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<const wchar_t*>(error.utf16()));
+ if (0)
+#elif defined(Q_OS_WIN) && defined(QT_BUILD_CORE_LIB)
+ if (usingWinMain) {
+ OutputDebugString(reinterpret_cast<const wchar_t*>(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*));
@@ -735,10 +771,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));
@@ -770,6 +812,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));
}
@@ -787,6 +837,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
*/
@@ -807,6 +875,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);
@@ -819,7 +889,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)
@@ -1009,6 +1079,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
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..f130288a24 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -44,8 +44,6 @@
#include <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -65,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)
@@ -286,6 +284,7 @@ public:
SplashScreen = ToolTip | Dialog,
Desktop = 0x00000010 | Window,
SubWindow = 0x00000012,
+ ForeignWindow = 0x00000020 | Window,
WindowType_Mask = 0x000000ff,
MSWindowsFixedSizeDialogHint = 0x00000100,
@@ -327,6 +326,15 @@ public:
Q_DECLARE_FLAGS(WindowStates, WindowState)
+ enum ApplicationState {
+ ApplicationSuspended = 0x00000000,
+ ApplicationHidden = 0x00000001,
+ ApplicationInactive = 0x00000002,
+ ApplicationActive = 0x00000004
+ };
+
+ Q_DECLARE_FLAGS(ApplicationStates, ApplicationState)
+
enum ScreenOrientation {
PrimaryOrientation = 0x00000000,
PortraitOrientation = 0x00000001,
@@ -490,6 +498,7 @@ public:
AA_X11InitThreads = 10,
AA_SynthesizeTouchForUnhandledMouseEvents = 11,
AA_SynthesizeMouseForUnhandledTouchEvents = 12,
+ AA_UseHighDpiPixmaps = 13,
// Add new attributes before this line
AA_AttributeCount
@@ -1194,6 +1203,13 @@ public:
BottomRightCorner = 0x00003
};
+ enum Edge {
+ TopEdge = 0x00001,
+ LeftEdge = 0x00002,
+ RightEdge = 0x00004,
+ BottomEdge = 0x00008
+ };
+
enum ConnectionType {
AutoConnection,
DirectConnection,
@@ -1300,6 +1316,8 @@ public:
ImhPreferLatin = 0x200,
+ ImhMultiLine = 0x400,
+
ImhDigitsOnly = 0x10000,
ImhFormattedNumbersOnly = 0x20000,
ImhUppercaseOnly = 0x40000,
@@ -1397,7 +1415,8 @@ public:
ItemIsDropEnabled = 8,
ItemIsUserCheckable = 16,
ItemIsEnabled = 32,
- ItemIsTristate = 64
+ ItemIsTristate = 64,
+ ItemNeverHasChildren = 128
};
Q_DECLARE_FLAGS(ItemFlags, ItemFlag)
@@ -1603,6 +1622,4 @@ public:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QNAMESPACE_H
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index cb18dde724..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
*/
@@ -1710,6 +1718,17 @@
*/
/*!
+ \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
This enum type describes the various modes of QAbstractScrollArea's scroll
@@ -1783,6 +1802,36 @@
*/
/*!
+ \enum Qt::ApplicationState
+
+ \keyword application state
+
+ This enum type is used to specify the current state of the application.
+
+ The states are
+
+ \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
+*/
+
+/*!
\enum Qt::ScreenOrientation
This enum type specifies the various orientations a screen might have.
@@ -1936,6 +1985,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:
@@ -2315,6 +2368,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.
@@ -2441,6 +2496,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/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 <QtCore/qglobal.h>
-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/qprocessordetection.h b/src/corelib/global/qprocessordetection.h
index c005c5446e..178afb1db6 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
@@ -279,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
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/qsystemdetection.h b/src/corelib/global/qsystemdetection.h
index 5f9671932f..0caac3d797 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)
@@ -78,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__))
@@ -88,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__))
@@ -166,6 +172,10 @@
# elif defined(Q_OS_DARWIN32)
# define Q_OS_MAC32
# endif
+# include <TargetConditionals.h>
+# if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
+# define Q_OS_IOS
+# endif
#endif
#if defined(Q_OS_WIN)
@@ -175,30 +185,50 @@
#endif
#ifdef Q_OS_DARWIN
-# ifdef MAC_OS_X_VERSION_MIN_REQUIRED
-# undef MAC_OS_X_VERSION_MIN_REQUIRED
+# include <Availability.h>
+# 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
-# define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_4
# include <AvailabilityMacros.h>
-# if !defined(MAC_OS_X_VERSION_10_3)
-# define MAC_OS_X_VERSION_10_3 MAC_OS_X_VERSION_10_2 + 1
+# 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_4)
-# define MAC_OS_X_VERSION_10_4 MAC_OS_X_VERSION_10_3 + 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_5)
-# define MAC_OS_X_VERSION_10_5 MAC_OS_X_VERSION_10_4 + 1
-# 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 !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_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
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/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 692a982adf..2ae66da92b 100644
--- a/src/corelib/global/qtypetraits.h
+++ b/src/corelib/global/qtypetraits.h
@@ -109,7 +109,6 @@
#include <utility> // For pair
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
namespace QtPrivate {
@@ -509,6 +508,4 @@ Q_STATIC_ASSERT(( is_signed<qint64>::value));
} // namespace QtPrivate
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QTYPETRAITS_H
diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri
index f57dcebe33..3688642bcb 100644
--- a/src/corelib/io/io.pri
+++ b/src/corelib/io/io.pri
@@ -18,14 +18,19 @@ 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 \
io/qtextstream.h \
+ io/qtextstream_p.h \
io/qtemporarydir.h \
io/qtemporaryfile.h \
+ 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 \
@@ -58,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 \
@@ -65,6 +71,7 @@ SOURCES += \
io/qtemporaryfile.cpp \
io/qresource.cpp \
io/qresource_iterator.cpp \
+ io/qsavefile.cpp \
io/qstandardpaths.cpp \
io/qurl.cpp \
io/qurlidna.cpp \
@@ -81,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
@@ -105,15 +113,15 @@ win32 {
SOURCES += \
io/qfsfileengine_unix.cpp \
io/qfilesystemengine_unix.cpp \
+ io/qlockfile_unix.cpp \
io/qprocess_unix.cpp \
io/qfilesystemiterator_unix.cpp \
- !nacl:macx-*: {
- SOURCES += io/qfilesystemengine_mac.cpp
+ !nacl:mac: {
SOURCES += io/qsettings_mac.cpp
}
- macx-*: {
- !ios {
+ mac {
+ macx {
SOURCES += io/qstandardpaths_mac.cpp
} else {
SOURCES += io/qstandardpaths_unix.cpp
@@ -124,13 +132,13 @@ 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
}
!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/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp
index 2d9cb85d9f..9cdbbbbb25 100644
--- a/src/corelib/io/qabstractfileengine.cpp
+++ b/src/corelib/io/qabstractfileengine.cpp
@@ -400,6 +400,19 @@ bool QAbstractFileEngine::close()
}
/*!
+ \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.
@@ -496,6 +509,24 @@ bool QAbstractFileEngine::rename(const QString &newName)
}
/*!
+ \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
(be it a shortcut on Windows or a symbolic link on Unix). Returns
diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h
index 868b086b57..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 {
@@ -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);
@@ -131,6 +132,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;
@@ -208,7 +210,7 @@ private:
Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractFileEngine::FileFlags)
-class Q_AUTOTEST_EXPORT QAbstractFileEngineHandler
+class Q_CORE_EXPORT QAbstractFileEngineHandler
{
public:
QAbstractFileEngineHandler();
@@ -217,7 +219,7 @@ public:
};
class QAbstractFileEngineIteratorPrivate;
-class Q_AUTOTEST_EXPORT QAbstractFileEngineIterator
+class Q_CORE_EXPORT QAbstractFileEngineIterator
{
public:
QAbstractFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters);
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 <QtCore/qiodevice.h>
#include <QtCore/qbytearray.h>
-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.cpp b/src/corelib/io/qdatastream.cpp
index 544e9e8592..5f5e9a8b72 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()
*/
@@ -742,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/qdatastream.h b/src/corelib/io/qdatastream.h
index 092f3a15b3..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
@@ -87,8 +85,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
};
@@ -434,6 +433,4 @@ inline QDataStream& operator<<(QDataStream& s, const QPair<T1, T2>& p)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QDATASTREAM_H
diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp
index bd43963139..9cb5609dac 100644
--- a/src/corelib/io/qdebug.cpp
+++ b/src/corelib/io/qdebug.cpp
@@ -47,6 +47,9 @@
#endif
#include "qdebug.h"
+#include <private/qtextstream_p.h>
+
+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 be8252fbb2..ce72fcd26d 100644
--- a/src/corelib/io/qdebug.h
+++ b/src/corelib/io/qdebug.h
@@ -53,14 +53,13 @@
#include <QtCore/qset.h>
#include <QtCore/qcontiguouscache.h>
-QT_BEGIN_HEADER
-
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 +131,17 @@ public:
Q_DECLARE_SHARED(QDebug)
+class QDebugStateSaverPrivate;
+class Q_CORE_EXPORT QDebugStateSaver
+{
+public:
+ QDebugStateSaver(QDebug &dbg);
+ ~QDebugStateSaver();
+private:
+ Q_DISABLE_COPY(QDebugStateSaver)
+ QScopedPointer<QDebugStateSaverPrivate> d;
+};
+
class QNoDebug
{
public:
@@ -279,6 +289,4 @@ inline QDebug operator<<(QDebug debug, const QFlags<T> &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 <QtCore/qstringlist.h>
#include <QtCore/qshareddata.h>
-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 <QtCore/qdir.h>
-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.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.
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 <QtCore/qiodevice.h>
#include <QtCore/qstring.h>
-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 <QtCore/qshareddata.h>
#include <QtCore/qmetatype.h>
-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/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 4af01f6730..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()));
@@ -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;
@@ -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)
@@ -685,8 +683,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");
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/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/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/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp
index 3963416084..f0f3c935e6 100644
--- a/src/corelib/io/qfsfileengine.cpp
+++ b/src/corelib/io/qfsfileengine.cpp
@@ -419,6 +419,17 @@ bool QFSFileEngine::flush()
}
/*!
+ \reimp
+*/
+bool QFSFileEngine::syncToDisk()
+{
+ Q_D(QFSFileEngine);
+ if ((d->openMode & QIODevice::WriteOnly) == 0)
+ return true;
+ return d->nativeSyncToDisk();
+}
+
+/*!
\internal
*/
bool QFSFileEnginePrivate::flushFh()
@@ -908,6 +919,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 d19310b6b6..21f38fea1d 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);
@@ -88,6 +89,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;
@@ -149,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 482f65e7f6..a5f077bd0b 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -258,6 +258,23 @@ bool QFSFileEnginePrivate::nativeFlush()
/*!
\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
*/
qint64 QFSFileEnginePrivate::nativeRead(char *data, qint64 len)
{
@@ -388,6 +405,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 24631f11c7..23ab507dad 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -198,15 +198,25 @@ 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
*/
qint64 QFSFileEnginePrivate::nativeSize() const
{
@@ -507,6 +517,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/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/qiodevice.h b/src/corelib/io/qiodevice.h
index 96a8971639..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 <QtCore/qglobal.h>
#ifndef QT_NO_QOBJECT
#include <QtCore/qobject.h>
#else
@@ -54,8 +55,6 @@
#error qiodevice.h must be included before any header file that defines open
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -177,6 +176,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/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 <faure+bluesystems@kde.org>
+** 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 <QtCore/qthread.h>
+#include <QtCore/qelapsedtimer.h>
+#include <QtCore/qdatetime.h>
+
+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 <faure+bluesystems@kde.org>
+** 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 <QtCore/qstring.h>
+#include <QtCore/qscopedpointer.h>
+
+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<QLockFilePrivate> 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 <faure+bluesystems@kde.org>
+** 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 <QtCore/qlockfile.h>
+#include <QtCore/qfile.h>
+
+#ifdef Q_OS_WIN
+#include <qt_windows.h>
+#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 <faure+bluesystems@kde.org>
+** 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 <sys/file.h> // flock
+#include <sys/types.h> // kill
+#include <signal.h> // 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 <faure+bluesystems@kde.org>
+** 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 <qt_windows.h>
+
+#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/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;
}
@@ -2074,6 +2128,24 @@ QString QProcess::program() const
}
/*!
+ \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.
\sa start()
@@ -2085,6 +2157,24 @@ QStringList QProcess::arguments() const
}
/*!
+ \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.
The process may not exit as a result of calling this function (it is given
diff --git a/src/corelib/io/qprocess.h b/src/corelib/io/qprocess.h
index 2c6746b0ab..29adf37f74 100644
--- a/src/corelib/io/qprocess.h
+++ b/src/corelib/io/qprocess.h
@@ -46,8 +46,6 @@
#include <QtCore/qstringlist.h>
#include <QtCore/qshareddata.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -138,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);
@@ -261,6 +265,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPROCESS_H
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index e159bf8f30..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],
@@ -1001,9 +1010,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);
}
@@ -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) {
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/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 <QtCore/qstringlist.h>
#include <QtCore/qlist.h>
-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/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/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 <faure@kde.org>
+** 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..32af4a708e
--- /dev/null
+++ b/src/corelib/io/qsavefile.h
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 David Faure <faure@kde.org>
+** 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 <QtCore/qfiledevice.h>
+#include <QtCore/qstring.h>
+
+#ifdef open
+#error qsavefile.h must be included before any header file that defines open
+#endif
+
+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
+
+#endif // QSAVEFILE_H
diff --git a/src/widgets/styles/qmacstylepixmaps_mac_p.h b/src/corelib/io/qsavefile_p.h
index f76383a2d4..27e687835b 100644
--- a/src/widgets/styles/qmacstylepixmaps_mac_p.h
+++ b/src/corelib/io/qsavefile_p.h
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2013 David Faure <faure@kde.org>
** Contact: http://www.qt-project.org/legal
**
-** This file is part of the QtGui module of the Qt Toolkit.
+** This file is part of the QtCore module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#ifndef QMACSTYLEPIXMAPS_MAC_P_H
-#define QMACSTYLEPIXMAPS_MAC_P_H
+#ifndef QSAVEFILE_P_H
+#define QSAVEFILE_P_H
//
// W A R N I N G
@@ -53,20 +53,23 @@
// 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"};
+#include "private/qfiledevice_p.h"
-#endif // QMACSTYLEPIXMAPS_MAC_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
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<QString, QVariant>.
-
+
\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.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 <QtCore/qstring.h>
#include <QtCore/qscopedpointer.h>
-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/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<const wchar_t *>(emptyKey.utf16()));
diff --git a/src/corelib/io/qstandardpaths.h b/src/corelib/io/qstandardpaths.h
index 9b95d26ce1..d8b6d24f57 100644
--- a/src/corelib/io/qstandardpaths.h
+++ b/src/corelib/io/qstandardpaths.h
@@ -44,8 +44,6 @@
#include <QtCore/qstringlist.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -85,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());
@@ -102,6 +102,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSTANDARDPATHS_H
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 <stdlib.h> // mkdtemp
-#if defined(Q_OS_QNX) || defined(Q_OS_WIN)
+#if defined(Q_OS_QNX) || defined(Q_OS_WIN) || defined(Q_OS_ANDROID)
#include <private/qfilesystemengine_p.h>
#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/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 <QtCore/qdir.h>
#include <QtCore/QScopedPointer>
-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.cpp b/src/corelib/io/qtemporaryfile.cpp
index 9408727d25..d3a6e3c238 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,36 +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 close();
-
- bool filePathIsTemplate;
- bool filePathWasTemplate;
-};
-
QTemporaryFileEngine::~QTemporaryFileEngine()
{
QFSFileEngine::close();
@@ -398,6 +367,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.
@@ -407,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)
{
@@ -440,7 +402,7 @@ QAbstractFileEngine *QTemporaryFilePrivate::engine() const
return fileEngine;
}
-static QString defaultTemplateName()
+QString QTemporaryFilePrivate::defaultTemplateName()
{
QString baseName;
#if defined(QT_BUILD_CORE_LIB)
@@ -506,7 +468,7 @@ QTemporaryFile::QTemporaryFile()
: QFile(*new QTemporaryFilePrivate)
{
Q_D(QTemporaryFile);
- d->templateName = defaultTemplateName();
+ d->templateName = QTemporaryFilePrivate::defaultTemplateName();
}
QTemporaryFile::QTemporaryFile(const QString &templateName)
@@ -529,7 +491,7 @@ QTemporaryFile::QTemporaryFile()
: QFile(*new QTemporaryFilePrivate, 0)
{
Q_D(QTemporaryFile);
- d->templateName = defaultTemplateName();
+ d->templateName = QTemporaryFilePrivate::defaultTemplateName();
}
/*!
@@ -565,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.h b/src/corelib/io/qtemporaryfile.h
index b497d9de93..09aa53c33b 100644
--- a/src/corelib/io/qtemporaryfile.h
+++ b/src/corelib/io/qtemporaryfile.h
@@ -49,14 +49,13 @@
#error qtemporaryfile.h must be included before any header file that defines open
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
#ifndef QT_NO_TEMPORARYFILE
class QTemporaryFilePrivate;
+class QLockFilePrivate;
class Q_CORE_EXPORT QTemporaryFile : public QFile
{
@@ -98,6 +97,7 @@ protected:
private:
friend class QFile;
+ friend class QLockFilePrivate;
Q_DISABLE_COPY(QTemporaryFile)
};
@@ -105,6 +105,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QTEMPORARYFILE_H
diff --git a/src/corelib/io/qtemporaryfile_p.h b/src/corelib/io/qtemporaryfile_p.h
new file mode 100644
index 0000000000..d274f60ecc
--- /dev/null
+++ b/src/corelib/io/qtemporaryfile_p.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** 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 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();
+
+ friend class QLockFilePrivate;
+};
+
+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 */
+
diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp
index 70c6eed9da..8459cdd158 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 <locale.h>
#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<qlonglong>(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<quintptr>(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 3c25e0587a..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
@@ -194,6 +192,7 @@ public:
private:
Q_DISABLE_COPY(QTextStream)
+ friend class QDebugStateSaverPrivate;
QScopedPointer<QTextStreamPrivate> d_ptr;
};
@@ -284,6 +283,4 @@ inline QTextStreamManipulator qSetRealNumberPrecision(int precision)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QTEXTSTREAM_H
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
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/qurl.cpp b/src/corelib/io/qurl.cpp
index 7ff23d931c..c71bb3afac 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");
@@ -660,7 +655,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
@@ -3765,6 +3760,37 @@ QString QUrl::errorString() const
}
/*!
+ \since 5.1
+
+ Converts a list of \a urls into a list of QStrings, using toString(\a options).
+*/
+QStringList QUrl::toStringList(const QList<QUrl> &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> QUrl::fromStringList(const QStringList &urls, ParsingMode mode)
+{
+ QList<QUrl> 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 bd35b44f17..de4ce754fb 100644
--- a/src/corelib/io/qurl.h
+++ b/src/corelib/io/qurl.h
@@ -50,8 +50,6 @@
#include <QtCore/qpair.h>
#include <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -322,6 +320,9 @@ public:
static QString fromAce(const QByteArray &);
static QByteArray toAce(const QString &);
static QStringList idnWhitelist();
+ static QStringList toStringList(const QList<QUrl> &uris, FormattingOptions options = FormattingOptions(PrettyDecoded));
+ static QList<QUrl> 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;
@@ -381,6 +382,4 @@ QT_END_NAMESPACE
# include <QtCore/qurlquery.h>
#endif
-QT_END_HEADER
-
#endif // QURL_H
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;
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 <QtCore/qstringlist.h>
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QUrlQueryPrivate;
@@ -173,6 +171,4 @@ inline QList<QByteArray> QUrl::allEncodedQueryItemValues(const QByteArray &key)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QURLQUERY_H
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,
+24470,
+24473,
+24492,
+24505,
+24508,
+24508,
24531,
-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,
+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,
-27371,
-27401,
-27401,
-27417,
-27417,
+27393,
+27399,
+27399,
+27405,
+27405,
+27405,
+27411,
+27418,
+27425,
+27431,
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,
+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,
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,
+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,
-28575,
-28575,
-28575,
-28582,
-28599,
-28615,
-28630,
-28630,
+28549,
+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,
-29117,
-29117,
-29117,
+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,
-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,
+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,
-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,
+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,
-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,
+32351,
+32358,
+32396,
+32396,
+32396,
32402,
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,
-33348,
-33348,
-33348,
+33134,
+33157,
+33164,
+33200,
+33200,
+33207,
+33244,
+33244,
+33309,
+33316,
+33316,
+33316,
+33316,
+33316,
+33323,
+33341,
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,
-33494,
-33504,
-33511,
-33551,
-33551,
-33558,
-33589,
-33595,
-33595,
+33487,
+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,
-34318,
+34272,
+34272,
+34272,
+34279,
+34294,
+34300,
+34313,
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,
+34333,
+34347,
+34354,
+34361,
+34368,
+34368,
+34368,
+34408,
+34433,
+34467,
+34504,
+34504,
+34547,
+34547,
+34554,
+34561,
+34561,
+34561,
+34582,
34589,
-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,
-35226,
-35226,
+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,
-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,
+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,
-38559,
-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,
-39677,
-39677,
-39684,
-39691,
-39702,
-39717,
-39717,
-39717,
-39724,
-39749,
-39760,
-39766,
-39775,
-39791,
-39791,
-39814,
-39827,
-39827,
-39837,
-39859};
+39670,
+39670,
+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"
+"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"
+"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"
+"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"
+"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"
+"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"
+"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"
+"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"
-"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"
+"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"
+"i.bg\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"
+"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"
+"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"
+"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\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\0gov.eg\0"
+"ao\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\0idv.hk\0"
+"agents.aero\0bf\0"
+"aw\0bg\0notteroy.no\0"
+"ax\0bh\0"
+"bi\0"
+"az\0bj\0"
+"higashiizu.shizuoka.jp\0"
+"bm\0norilsk.ru\0"
+"bo\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"
+"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"
+"izumozaki.niigata.jp\0"
+"ee\0"
+"principe.st\0"
+"eg\0"
+"is-a-bookkeeper.com\0"
+"dz\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\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"
+"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"
+"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"
+"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\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"
+"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"
+"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"
+"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"
+"sh\0"
+"cnt.br\0harima.hyogo.jp\0si\0"
+"1.bg\0"
+"sk\0"
+"sl\0"
+"sm\0"
+"plaza.museum\0sn\0"
+"so\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"
+"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"
+"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"
+"mil.ac\0co.hu\0"
+"suzuka.mie.jp\0sigdal.no\0"
+"mil.ae\0"
+"forde.no\0ws\0"
+"ivgu.no\0"
+"co.im\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"
+"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"
+"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"
+"co.ug\0"
+"mil.lv\0"
+"mil.mg\0"
+"co.tz\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"
+"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"
+"broker.aero\0com.hn\0shinshinotsu.hokkaido.jp\0"
+"k12.ri.us\0"
+"czeladz.pl\0"
+"dovre.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.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"
-"im.it\0idv.tw\0"
-"*.akita.jp\0com.km\0r\xc3\xb8ros.no\0sopot.pl\0"
-"!pref.yamanashi.jp\0"
+"bibai.hokkaido.jp\0tsk.ru\0"
+"fm.no\0"
+"com.km\0kirovograd.ua\0"
+"b.bg\0tomi.nagano.jp\0"
"com.kp\0"
-"!pref.kochi.jp\0com.la\0"
+"ballooning.aero\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.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"
-"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.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\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.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"
-"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"
+"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"
-"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"
+"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"
-"*.ye\0"
-"com.sa\0"
-"com.sb\0"
-"so.it\0com.sc\0"
-"jolster.no\0com.sd\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"
-"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"
+"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"
-"broadcast.museum\0"
+"net.ai\0eidsberg.no\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"
-"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"
-"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"
-"frana.no\0"
-"bt.it\0"
-"net.bh\0"
-"auto.pl\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"
-"treviso.it\0"
-"war.museum\0"
+"roan.no\0"
+"com.vc\0\xe5\x8f\xb0\xe7\x81\xa3\0"
"net.bm\0"
-"langevag.no\0m\xc3\xa5lselv.no\0"
+"com.ve\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.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"
-"sch.ae\0undersea.museum\0odda.no\0"
+"livinghistory.museum\0"
"net.cn\0"
-"net.co\0c.la\0"
-"gliwice.pl\0"
-"aurskog-h\xc3\xb8land.no\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.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"
-"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"
+"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"
-"philadelphiaarea.museum\0"
-"osen.no\0"
+"kahoku.yamagata.jp\0"
+"asakawa.fukushima.jp\0"
+"barlettatraniandria.it\0blogspot.mr\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"
+"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"
-"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"
-"eu.int\0"
-"c.se\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"
-"ce.it\0net.ki\0"
-"sch.id\0os.hedmark.no\0"
-"columbus.museum\0"
-"arteducation.museum\0"
+"net.ki\0"
+"sakura.chiba.jp\0nittedal.no\0"
+"kawazu.shizuoka.jp\0"
"net.kn\0"
-"kr.com\0"
-"net.la\0bushey.museum\0cc.gu.us\0"
-"net.lb\0"
+"net.la\0hoylandet.no\0"
+"net.lb\0\xc3\xa5mli.no\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"
+"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\0evenes.no\0"
-"ngo.lk\0net.mo\0egyptian.museum\0"
-"marine.ru\0"
-"realestate.pl\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"
-"net.mw\0net.ng\0gda.pl\0"
+"adult.ht\0ne.jp\0coldwar.museum\0net.mw\0net.ng\0museum.no\0blogspot.com.au\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"
+"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"
-"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"
+"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"
-"net.pl\0"
-"net.pn\0"
-"washingtondc.museum\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"
-"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"
+"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"
-"works.aero\0net.sc\0komvux.se\0"
+"net.sc\0blogspot.gr\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"
+"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"
-"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.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"
-"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"
+"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"
-"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"
-"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"
+"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"
-"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"
+"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"
-"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"
+"naumburg.museum\0"
+"szczecin.pl\0"
+"koza.wakayama.jp\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"
+"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"
+"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"
-"!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"
+"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"
-"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"
-"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"
+"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"
-"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"
-"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"
+"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"
-"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"
+"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"
-"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"
+"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"
-"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"
-"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"
-"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"
-"am\0"
-"an\0cl.it\0"
-"ao\0"
-"aq\0ba\0"
-"bb\0"
-"as\0lajolla.museum\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"
-"az\0bj\0"
-"bm\0tranibarlettaandria.it\0naamesjevuemie.no\0"
-"chattanooga.museum\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"
-"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"
-"ec\0"
-"biz.pr\0"
-"ee\0celtic.museum\0"
-"scientist.aero\0modern.museum\0"
-"pr.us\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"
-"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"
-"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"
-"kg\0"
-"mo-i-rana.no\0"
-"gov.dz\0ki\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"
-"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"
-"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"
-"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"
-"my\0"
-"gov.hk\0name.hr\0"
-"nl\0"
-"astronomy.museum\0lib.nm.us\0"
-"catania.it\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"
-"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"
-"rw\0sg\0"
-"gov.ly\0assisi.museum\0kids.museum\0sh\0"
-"si\0"
-"gov.mk\0"
-"gov.ml\0sk\0"
-"sl\0"
-"gov.mn\0airguard.museum\0sm\0"
-"gov.mo\0l.se\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"
-"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"
-"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.id\0"
-"co.hu\0"
-"etne.no\0"
-"\xc3\xa1lt\xc3\xa1.no\0"
-"gov.vn\0"
-"modelling.aero\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"
+"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"
-"!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"
+"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"
-"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"
-"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"
-"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"
-"co.tt\0"
-"unj\xc3\xa1rga.no\0"
-"co.ug\0"
-"lib.wy.us\0"
-"co.tz\0"
-"ass.km\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"
+"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"
-"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"
+"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"
-"\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"
-"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"
-"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"
+"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
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_windows.h>
-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 <qwaitcondition.h>
#include <qt_windows.h>
-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 <qt_windows.h>
#include <qqueue.h>
-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.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp
index 0f51147252..0d67c1f17b 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.cpp
+++ b/src/corelib/itemmodels/qabstractitemmodel.cpp
@@ -866,6 +866,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
@@ -3053,6 +3074,7 @@ void QAbstractItemModel::endResetModel()
{
Q_D(QAbstractItemModel);
d->invalidatePersistentIndexes();
+ QMetaObject::invokeMethod(this, "resetInternalData");
emit modelReset(QPrivateSignal());
}
@@ -3270,6 +3292,17 @@ bool QAbstractTableModel::hasChildren(const QModelIndex &parent) const
}
/*!
+ \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
\brief The QAbstractListModel class provides an abstract model that can be
@@ -3390,6 +3423,17 @@ QModelIndex QAbstractListModel::parent(const QModelIndex & /* index */) const
}
/*!
+ \reimp
+ */
+Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const
+{
+ Qt::ItemFlags f = QAbstractItemModel::flags(index);
+ if (index.isValid())
+ f |= Qt::ItemNeverHasChildren;
+ return f;
+}
+
+/*!
\internal
Returns the number of columns in the list with the given \a parent.
diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h
index 793a1ba169..6a57ccaca8 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.h
+++ b/src/corelib/itemmodels/qabstractitemmodel.h
@@ -47,8 +47,6 @@
#include <QtCore/qhash.h>
#include <QtCore/qvector.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -332,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);
@@ -421,6 +423,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);
@@ -441,6 +444,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);
@@ -473,6 +478,4 @@ inline uint qHash(const QModelIndex &index)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QABSTRACTITEMMODEL_H
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
@@ -148,6 +148,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.
*/
QAbstractItemModel *QAbstractProxyModel::sourceModel() const
diff --git a/src/corelib/itemmodels/qabstractproxymodel.h b/src/corelib/itemmodels/qabstractproxymodel.h
index e7a47214f8..9b26d6cead 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.h
+++ b/src/corelib/itemmodels/qabstractproxymodel.h
@@ -44,8 +44,6 @@
#include <QtCore/qabstractitemmodel.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -103,6 +101,9 @@ Q_SIGNALS:
#endif
);
+protected Q_SLOTS:
+ void resetInternalData();
+
protected:
QAbstractProxyModel(QAbstractProxyModelPrivate &, QObject *parent);
@@ -116,6 +117,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 4125683f77..8a416c97bc 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 <QtCore/qlist.h>
#include <QtCore/qabstractitemmodel.h>
-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 <QtCore/qregexp.h>
-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.cpp b/src/corelib/itemmodels/qstringlistmodel.cpp
index c6fabfcaee..31c9137c79 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;
}
/*!
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 <QtCore/qabstractitemmodel.h>
#include <QtCore/qstringlist.h>
-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 <QtCore/qjsonvalue.h>
#include <QtCore/qiterator.h>
-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.cpp b/src/corelib/json/qjsondocument.cpp
index 550cc76b0d..bdb46528d3 100644
--- a/src/corelib/json/qjsondocument.cpp
+++ b/src/corelib/json/qjsondocument.cpp
@@ -303,15 +303,50 @@ QVariant QJsonDocument::toVariant() const
*/
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();
QByteArray json;
if (d->header->root()->isArray())
- QJsonPrivate::Writer::arrayToJson(static_cast<QJsonPrivate::Array *>(d->header->root()), json, 0);
+ QJsonPrivate::Writer::arrayToJson(static_cast<QJsonPrivate::Array *>(d->header->root()), json, 0, (format == Compact));
else
- QJsonPrivate::Writer::objectToJson(static_cast<QJsonPrivate::Object *>(d->header->root()), json, 0);
+ QJsonPrivate::Writer::objectToJson(static_cast<QJsonPrivate::Object *>(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..4d4f3885dc 100644
--- a/src/corelib/json/qjsondocument.h
+++ b/src/corelib/json/qjsondocument.h
@@ -44,8 +44,6 @@
#include <QtCore/qjsonvalue.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QDebug;
@@ -109,8 +107,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;
@@ -144,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 <QtCore/qjsonvalue.h>
#include <QtCore/qiterator.h>
-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 <QtCore/qglobal.h>
#include <QtCore/qstring.h>
-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/kernel.pri b/src/corelib/kernel/kernel.pri
index 34e32a721d..5a8499d723 100644
--- a/src/corelib/kernel/kernel.pri
+++ b/src/corelib/kernel/kernel.pri
@@ -131,7 +131,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/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 <QtCore/qobject.h>
#include <QtCore/qeventloop.h>
-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 <QtCore/qnamespace.h>
-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 <QtCore/qglobal.h>
#include <QtCore/qnamespace.h>
-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/qcore_mac_p.h b/src/corelib/kernel/qcore_mac_p.h
index cbbbc18814..4211a23e0f 100644
--- a/src/corelib/kernel/qcore_mac_p.h
+++ b/src/corelib/kernel/qcore_mac_p.h
@@ -57,12 +57,14 @@
# define __IMAGECAPTURE__
#endif
-#if defined(QT_BUILD_QMAKE) || defined(QT_BOOTSTRAPPED)
+#if defined(QT_BOOTSTRAPPED)
#include <ApplicationServices/ApplicationServices.h>
#else
#include <CoreFoundation/CoreFoundation.h>
#endif
+#include "qglobal.h"
+
#ifndef Q_OS_IOS
#include <CoreServices/CoreServices.h>
#endif
@@ -137,14 +139,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/kernel/qcore_unix.cpp b/src/corelib/kernel/qcore_unix.cpp
index cc5479876d..241658acb1 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,20 @@ 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);
+#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/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/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 02d4d0376a..cce8c30d81 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 <qdatastream.h>
#include <qdebug.h>
@@ -55,10 +57,12 @@
#include <private/qprocess_p.h>
#include <qstandardpaths.h>
#include <qtextcodec.h>
+#ifndef QT_NO_QOBJECT
#include <qthread.h>
#include <qthreadpool.h>
#include <qthreadstorage.h>
#include <private/qthread_p.h>
+#endif
#include <qelapsedtimer.h>
#include <qlibraryinfo.h>
#include <qvarlengtharray.h>
@@ -66,6 +70,7 @@
#include <private/qfunctions_p.h>
#include <private/qlocale_p.h>
+#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 <locale.h>
+# include <unistd.h>
#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,19 +191,47 @@ 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()
{
}
+typedef QList<QtStartUpFunction> QStartUpFuncList;
+Q_GLOBAL_STATIC(QStartUpFuncList, preRList)
typedef QList<QtCleanUpFunction> QVFuncList;
Q_GLOBAL_STATIC(QVFuncList, postRList)
+#ifndef QT_NO_QOBJECT
+static QBasicMutex globalPreRoutinesMutex;
+#endif
+
+/*!
+ \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 +249,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;
@@ -230,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()
{
@@ -243,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
@@ -261,13 +318,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
@@ -309,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 = "";
@@ -330,27 +389,35 @@ QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv, uint
argc = 0;
argv = (char **)&empty; // 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) {
@@ -423,6 +490,8 @@ void QCoreApplicationPrivate::checkReceiverThread(QObject *receiver)
}
#endif
+#endif // QT_NO_QOBJECT
+
void QCoreApplicationPrivate::appendApplicationPathToLibraryPaths()
{
#ifndef QT_NO_LIBRARY
@@ -544,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.
@@ -567,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
@@ -587,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();
@@ -604,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;
@@ -618,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);
@@ -637,9 +723,12 @@ void QCoreApplication::init()
d->processCommandLineArguments();
+ qt_call_pre_routines();
qt_startup_hook();
+#ifndef QT_NO_QOBJECT
QCoreApplicationPrivate::is_app_running = true; // No longer starting up.
+#endif
}
/*!
@@ -650,8 +739,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.
@@ -665,10 +756,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;
@@ -710,6 +803,8 @@ bool QCoreApplication::testAttribute(Qt::ApplicationAttribute attribute)
}
+#ifndef QT_NO_QOBJECT
+
/*!
\property QCoreApplication::quitLockEnabled
@@ -1572,6 +1667,8 @@ void QCoreApplication::quit()
\sa quit()
*/
+#endif // QT_NO_QOBJECT
+
#ifndef QT_NO_TRANSLATION
/*!
Adds the translation file \a translationFile to the list of
@@ -1613,8 +1710,11 @@ bool QCoreApplication::installTranslator(QTranslator *translationFile)
return false;
#endif
+#ifndef QT_NO_QOBJECT
QEvent ev(QEvent::LanguageChange);
QCoreApplication::sendEvent(self, &ev);
+#endif
+
return true;
}
@@ -1636,10 +1736,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;
@@ -1750,6 +1852,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
/*!
@@ -2001,9 +2116,23 @@ 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;
+#ifndef QT_NO_QOBJECT
+ if (QCoreApplication::self)
+ emit QCoreApplication::self->organizationNameChanged();
+#endif
}
QString QCoreApplication::organizationName()
@@ -2029,9 +2158,21 @@ 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;
+#ifndef QT_NO_QOBJECT
+ if (QCoreApplication::self)
+ emit QCoreApplication::self->organizationDomainChanged();
+#endif
}
QString QCoreApplication::organizationDomain()
@@ -2051,9 +2192,21 @@ 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;
+#ifndef QT_NO_QOBJECT
+ if (QCoreApplication::self)
+ emit QCoreApplication::self->applicationNameChanged();
+#endif
}
QString QCoreApplication::applicationName()
@@ -2080,9 +2233,21 @@ 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;
+#ifndef QT_NO_QOBJECT
+ if (QCoreApplication::self)
+ emit QCoreApplication::self->applicationVersionChanged();
+#endif
}
QString QCoreApplication::applicationVersion()
@@ -2231,6 +2396,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.
@@ -2326,6 +2493,33 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc
mainThread->setEventDispatcher(eventDispatcher);
}
+#endif // QT_NO_QOBJECT
+
+/*!
+ \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 0a87689ff3..ae17aeec0e 100644
--- a/src/corelib/kernel/qcoreapplication.h
+++ b/src/corelib/kernel/qcoreapplication.h
@@ -42,15 +42,21 @@
#ifndef QCOREAPPLICATION_H
#define QCOREAPPLICATION_H
+#include <QtCore/qglobal.h>
+#include <QtCore/qstring.h>
+#ifndef QT_NO_QOBJECT
#include <QtCore/qobject.h>
#include <QtCore/qcoreevent.h>
#include <QtCore/qeventloop.h>
+#else
+#include <QtCore/qscopedpointer.h>
+#endif
+#ifndef QT_NO_QOBJECT
#if defined(Q_OS_WIN) && !defined(tagMSG)
typedef struct tagMSG MSG;
#endif
-
-QT_BEGIN_HEADER
+#endif
QT_BEGIN_NAMESPACE
@@ -65,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)
- 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)
+#endif
Q_DECLARE_PRIVATE(QCoreApplication)
public:
@@ -103,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);
@@ -120,6 +132,7 @@ public:
static bool startingUp();
static bool closingDown();
+#endif
static QString applicationDirPath();
static QString applicationFilePath();
@@ -148,6 +161,7 @@ public:
{ return translate(context, key, disambiguation, n); }
#endif
+#ifndef QT_NO_QOBJECT
static void flush();
void installNativeEventFilter(QAbstractNativeEventFilter *filterObj);
@@ -166,17 +180,29 @@ Q_SIGNALS:
#endif
);
+ void organizationNameChanged();
+ void organizationDomainChanged();
+ void applicationNameChanged();
+ void applicationVersionChanged();
+
protected:
bool event(QEvent *);
virtual bool compressEvent(QEvent *, QObject *receiver, QPostEventList *);
+#endif // QT_NO_QOBJECT
protected:
QCoreApplication(QCoreApplicationPrivate &p);
+#ifdef QT_NO_QOBJECT
+ QScopedPointer<QCoreApplicationPrivate> d_ptr;
+#endif
+
private:
+#ifndef QT_NO_QOBJECT
static bool sendSpontaneousEvent(QObject *receiver, QEvent *event);
bool notifyInternal(QObject *receiver, QEvent *event);
+#endif
void init();
@@ -184,7 +210,6 @@ private:
Q_DISABLE_COPY(QCoreApplication)
- friend class QEventDispatcherUNIXPrivate;
friend class QApplication;
friend class QApplicationPrivate;
friend class QGuiApplication;
@@ -193,46 +218,59 @@ 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_TRANSLATION
-inline QString QCoreApplication::translate(const char *, const char *sourceText, const char *, int)
-{
- return QString::fromUtf8(sourceText);
-}
+#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)();
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)
+
+#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
-QT_END_HEADER
-
#endif // QCOREAPPLICATION_H
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<QTranslator*> 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 <private/qthread_p.h>
+#endif
#include <ctype.h>
#include <qt_windows.h>
@@ -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/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 <QtCore/qbytearray.h>
#include <QtCore/qobjectdefs.h>
-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/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);
};
diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp
index c6680d6a80..17830868da 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;
@@ -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);
diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp
index acdc7635e8..c79fe89105 100644
--- a/src/corelib/kernel/qeventdispatcher_unix.cpp
+++ b/src/corelib/kernel/qeventdispatcher_unix.cpp
@@ -56,6 +56,10 @@
#include <stdio.h>
#include <stdlib.h>
+#ifndef QT_NO_EVENTFD
+# include <sys/eventfd.h>
+#endif
+
// VxWorks doesn't correctly set the _POSIX_... options
#if defined(Q_OS_VXWORKS)
# if defined(_POSIX_MONOTONIC_CLOCK) && (_POSIX_MONOTONIC_CLOCK <= 0)
@@ -109,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);
@@ -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;
@@ -149,20 +159,21 @@ 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
// 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
qDeleteAll(timerList);
}
-int QEventDispatcherUNIXPrivate::doSelect(QEventLoop::ProcessEventsFlags flags, timeval *timeout)
+int QEventDispatcherUNIXPrivate::doSelect(QEventLoop::ProcessEventsFlags flags, timespec *timeout)
{
Q_Q(QEventDispatcherUNIX);
@@ -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
@@ -307,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);
}
@@ -580,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;
@@ -593,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);
@@ -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 afebe2fb7e..db89b7c444 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 <sys/times.h>
-#else
+#if !defined(Q_OS_VXWORKS)
# include <sys/time.h>
# if (!defined(Q_OS_HPUX) || defined(__ia64)) && !defined(Q_OS_NACL)
# include <sys/select.h>
@@ -132,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
@@ -143,11 +141,14 @@ 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);
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
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 <QtCore/qobject.h>
-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..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 <QtCore/qglobal.h>
+
#ifdef Q_OS_NACL
#include <sys/types.h>
@@ -52,8 +54,6 @@
#define PTHREAD_CANCEL_ENABLE 2
#define PTHREAD_INHERIT_SCHED 3
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -69,7 +69,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
@@ -89,8 +89,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.cpp b/src/corelib/kernel/qfunctions_vxworks.cpp
index 2174588757..e1abecb9d6 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 <vmLib.h>
+#endif
#include <selectLib.h>
#include <ioLib.h>
@@ -74,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)
@@ -92,7 +96,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*/ *)
@@ -118,7 +122,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 6339903cff..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 <QtCore/qglobal.h>
+
#ifdef Q_OS_VXWORKS
#include <unistd.h>
@@ -52,7 +55,11 @@
#include <errno.h>
#include <sys/types.h>
#include <sys/ioctl.h>
+#if defined(_WRS_KERNEL)
#include <sys/times.h>
+#else
+#include <sys/time.h>
+#endif
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/wait.h>
@@ -61,15 +68,50 @@
#include <net/if.h>
#endif
-QT_BEGIN_HEADER
+// 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 <netinet/in.h> <net/if.h>, 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_NAMESPACE
#ifdef QT_BUILD_CORE_LIB
#endif
QT_END_NAMESPACE
-QT_END_HEADER
-
#ifndef RTLD_LOCAL
#define RTLD_LOCAL 0
@@ -95,17 +137,23 @@ 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);
+#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
+// getpagesize() not available
int getpagesize();
// symlinks are not supported (lstat is now just a call to stat - see qplatformdefs.h)
diff --git a/src/corelib/kernel/qfunctions_wince.h b/src/corelib/kernel/qfunctions_wince.h
index e20a4ceaca..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 <QtCore/qglobal.h>
+
#ifdef Q_OS_WINCE
#include <stdio.h>
#include <stdlib.h>
@@ -56,15 +59,12 @@
#include <winsock.h>
#include <ceconfig.h>
-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.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 <lpapp@kde.org>
** 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 <QtMath>
+ \title Generic Math Declarations
+ \ingroup funclists
+
+ \brief The <QtMath> 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 <QtMath>
+ \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 <cmath> or
+ elsewhere.
+
+ Example:
+
+ \snippet code/src_corelib_kernel_qmath.cpp 0
+
+ \sa qRadiansToDegrees()
+*/
+
+/*!
+ \fn double qDegreesToRadians(double degrees)
+ \relates <QtMath>
+ \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 <cmath> or
+ elsewhere.
+
+ Example:
+
+ \snippet code/src_corelib_kernel_qmath.cpp 1
+
+ \sa qRadiansToDegrees()
+*/
+
+/*!
+ \fn float qRadiansToDegrees(float radians)
+ \relates <QtMath>
+ \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 <cmath> or
+ elsewhere.
+
+ Example:
+
+ \snippet code/src_corelib_kernel_qmath.cpp 2
+
+ \sa qDegreesToRadians()
+*/
+
+/*!
+ \fn double qRadiansToDegrees(double radians)
+ \relates <QtMath>
+ \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 <cmath> 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 097200d690..21e23b9eb0 100644
--- a/src/corelib/kernel/qmath.h
+++ b/src/corelib/kernel/qmath.h
@@ -42,12 +42,14 @@
#ifndef QMATH_H
#define QMATH_H
+#if 0
+#pragma qt_class(QtMath)
+#endif
+
#include <math.h>
#include <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -264,8 +266,26 @@ inline qreal qFastCos(qreal x)
return qt_sine_table[si] - (qt_sine_table[ci] + 0.5 * qt_sine_table[si] * d) * d;
}
-QT_END_NAMESPACE
+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);
+}
-QT_END_HEADER
+Q_DECL_CONSTEXPR inline double qRadiansToDegrees(double radians)
+{
+ return radians * (180 / M_PI);
+}
+
+QT_END_NAMESPACE
#endif // QMATH_H
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 <QtCore/qmath.h>
\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 <QtCore/qmath.h>
\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<QAbstractDynamicMetaObject *>(static_cast<const QAbstractDynamicMetaObject *>(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/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 <QtCore/qobjectdefs.h>
#include <QtCore/qvariant.h>
-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.cpp b/src/corelib/kernel/qmetatype.cpp
index abf220ebd4..b9f7462b12 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -959,11 +959,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<const NS(QRegularExpression)*>(data);
break;
-#endif // QT_NO_REGEXP
+#endif // QT_NO_REGULAREXPRESSION
case QMetaType::QEasingCurve:
stream << *static_cast<const NS(QEasingCurve)*>(data);
break;
@@ -1182,11 +1182,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.h b/src/corelib/kernel/qmetatype.h
index 3ffbfb8385..16ea1042a2 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
@@ -534,6 +532,9 @@ struct QMetaTypeId2
static inline Q_DECL_CONSTEXPR int qt_metatype_id() { return QMetaTypeId<T>::qt_metatype_id(); }
};
+template <typename T>
+struct QMetaTypeId2<const T&> : QMetaTypeId2<T> {};
+
namespace QtPrivate {
template <typename T, bool Defined = QMetaTypeId2<T>::Defined>
struct QMetaTypeIdHelper {
@@ -633,30 +634,30 @@ void qRegisterMetaTypeStreamOperators(const char *typeName
#endif // QT_NO_DATASTREAM
template <typename T>
-inline Q_DECL_CONSTEXPR int qMetaTypeId(
-#ifndef Q_QDOC
- T * /* dummy */ = 0
-#endif
-)
+inline Q_DECL_CONSTEXPR int qMetaTypeId()
{
Q_STATIC_ASSERT_X(QMetaTypeId2<T>::Defined, "Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known to Qt's meta-object system");
return QMetaTypeId2<T>::qt_metatype_id();
}
template <typename T>
-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<T *>(0));
-#else
- return qMetaTypeId(dummy);
-#endif
+ return qMetaTypeId<T>();
}
+#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 <typename T>
+QT_DEPRECATED inline Q_DECL_CONSTEXPR int qMetaTypeId(T *)
+{ return qMetaTypeId<T>(); }
+#ifndef Q_CC_SUN
+template <typename T>
+QT_DEPRECATED inline Q_DECL_CONSTEXPR int qRegisterMetaType(T *)
+{ return qRegisterMetaType<T>(); }
+#endif
+#endif
+
template <typename T>
struct QMetaTypeIdQObject<T*, /* isPointerToTypeDerivedFromQObject */ true>
{
@@ -980,6 +981,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/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h
index 39bdd5e3bb..95b9e2e394 100644
--- a/src/corelib/kernel/qmetatype_p.h
+++ b/src/corelib/kernel/qmetatype_p.h
@@ -221,7 +221,7 @@ template<> struct TypeDefinition<QPointF> { static const bool IsAvailable = fals
#ifdef QT_NO_REGEXP
template<> struct TypeDefinition<QRegExp> { 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<QRegularExpression> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_SHORTCUT
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 <QtCore/qvariant.h>
#include <QtCore/qobject.h>
-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.cpp b/src/corelib/kernel/qobject.cpp
index 36db55d25a..1312e64d8b 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
@@ -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
@@ -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,
@@ -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,39 +3230,66 @@ void QMetaObject::connectSlotsByName(QObject *o)
return;
const QMetaObject *mo = o->metaObject();
Q_ASSERT(mo);
- const QObjectList list = o->findChildren<QObject *>(QString());
+ const QObjectList list = // list of all objects to look for matching signals including...
+ o->findChildren<QObject *>(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_<objectName>_...", ...
+ 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_<objectName>_<signal>".
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<QByteArray> 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;
}
}
@@ -3268,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);
}
}
}
@@ -3334,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 };
@@ -4151,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.
*/
@@ -4181,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().
*/
/**
diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h
index a2d7dcd7ef..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 <ogoffart@woboq.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -56,8 +57,6 @@
#include <QtCore/qobject_impl.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -73,7 +72,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
@@ -179,7 +178,7 @@ public:
}
#endif
-#ifndef QT_NO_REGEXP
+#ifndef QT_NO_REGULAREXPRESSION
template<typename T>
inline QList<T> findChildren(const QRegularExpression &re, Qt::FindChildOptions options = Qt::FindChildrenRecursively) const
{
@@ -267,27 +266,50 @@ public:
static inline typename QtPrivate::QEnableIf<QtPrivate::FunctionPointer<Func2>::ArgumentCount == -1, QMetaObject::Connection>::Type
connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, Func2 slot)
{
+#if defined (Q_COMPILER_DECLTYPE) && defined (Q_COMPILER_VARIADIC_TEMPLATES)
+ typedef QtPrivate::FunctionPointer<Func1> SignalType;
+ const int FunctorArgumentCount = QtPrivate::ComputeFunctorArgumentCount<Func2 , typename SignalType::Arguments>::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<Func2, typename QtPrivate::List_Left<typename SignalType::Arguments, SlotArgumentCount>::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 <typename Func1, typename Func2, typename Func2Operator>
static inline QMetaObject::Connection connect_functor(const QObject *sender, Func1 signal, Func2 slot, Func2Operator) {
typedef QtPrivate::FunctionPointer<Func2Operator> SlotType ;
#else
-
typedef QtPrivate::FunctionPointer<decltype(&Func2::operator())> SlotType ;
#endif
typedef QtPrivate::FunctionPointer<Func1> 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<typename SignalType::Arguments, typename SlotType::Arguments>::value),
"Signal and slot arguments are not compatible.");
- Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible<typename SlotType::ReturnType, typename SignalType::ReturnType>::value),
+#endif
+
+ Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible<SlotReturnType, typename SignalType::ReturnType>::value),
"Return type of the slot is not compatible with the return type of the signal.");
return connectImpl(sender, reinterpret_cast<void **>(&signal), sender, 0,
- new QtPrivate::QFunctorSlotObject<Func2, SlotType::ArgumentCount,
- typename QtPrivate::List_Left<typename SignalType::Arguments, SlotType::ArgumentCount>::Value,
+ new QtPrivate::QFunctorSlotObject<Func2, SlotArgumentCount,
+ typename QtPrivate::List_Left<typename SignalType::Arguments, SlotArgumentCount>::Value,
typename SignalType::ReturnType>(slot),
Qt::DirectConnection, 0, &SignalType::Object::staticMetaObject);
}
@@ -496,8 +518,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 7ed4d33e96..0b5631f2a6 100644
--- a/src/corelib/kernel/qobject_impl.h
+++ b/src/corelib/kernel/qobject_impl.h
@@ -45,7 +45,10 @@
#error Do not include qobject_impl.h directly
#endif
-QT_BEGIN_HEADER
+#if 0
+#pragma qt_sync_skip_header_check
+#pragma qt_sync_stop_processing
+#endif
QT_BEGIN_NAMESPACE
@@ -207,6 +210,4 @@ namespace QtPrivate {
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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 <ogoffart@woboq.com>
** 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 <typename Func1, typename Func2>
+ static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
+ const typename QtPrivate::FunctionPointer<Func2>::Object *receiverPrivate, Func2 slot,
+ Qt::ConnectionType type = Qt::AutoConnection);
+
+ template <typename Func1, typename Func2>
+ static inline bool disconnect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
+ const typename QtPrivate::FunctionPointer<Func2>::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<typename Func, typename Args, typename R> class QPrivateSlotObject : public QSlotObjectBase
+{
+ typedef QtPrivate::FunctionPointer<Func> FuncType;
+ Func function;
+ static void impl(int which, QSlotObjectBase *this_, QObject *r, void **a, bool *ret)
+ {
+ switch (which) {
+ case Destroy:
+ delete static_cast<QPrivateSlotObject*>(this_);
+ break;
+ case Call:
+ FuncType::template call<Args, R>(static_cast<QPrivateSlotObject*>(this_)->function,
+ static_cast<typename FuncType::Object *>(QObjectPrivate::get(r)), a);
+ break;
+ case Compare:
+ *ret = *reinterpret_cast<Func *>(a) == static_cast<QPrivateSlotObject*>(this_)->function;
+ break;
+ case NumOperations: ;
+ }
+ }
+public:
+ explicit QPrivateSlotObject(Func f) : QSlotObjectBase(&impl), function(f) {}
+};
+} //namespace QtPrivate
+
+template <typename Func1, typename Func2>
+inline QMetaObject::Connection QObjectPrivate::connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
+ const typename QtPrivate::FunctionPointer<Func2>::Object *receiverPrivate, Func2 slot,
+ Qt::ConnectionType type)
+{
+ typedef QtPrivate::FunctionPointer<Func1> SignalType;
+ typedef QtPrivate::FunctionPointer<Func2> SlotType;
+ reinterpret_cast<typename SignalType::Object *>(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast<typename SignalType::Object *>(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<typename SignalType::Arguments, typename SlotType::Arguments>::value),
+ "Signal and slot arguments are not compatible.");
+ Q_STATIC_ASSERT_X((QtPrivate::AreArgumentsCompatible<typename SlotType::ReturnType, typename SignalType::ReturnType>::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<typename SignalType::Arguments>::types();
+
+ return QObject::connectImpl(sender, reinterpret_cast<void **>(&signal),
+ receiverPrivate->q_func(), reinterpret_cast<void **>(&slot),
+ new QtPrivate::QPrivateSlotObject<Func2, typename QtPrivate::List_Left<typename SignalType::Arguments, SlotType::ArgumentCount>::Value,
+ typename SignalType::ReturnType>(slot),
+ type, types, &SignalType::Object::staticMetaObject);
+}
+
+template <typename Func1, typename Func2>
+bool QObjectPrivate::disconnect(const typename QtPrivate::FunctionPointer< Func1 >::Object* sender, Func1 signal,
+ const typename QtPrivate::FunctionPointer< Func2 >::Object* receiverPrivate, Func2 slot)
+{
+ typedef QtPrivate::FunctionPointer<Func1> SignalType;
+ typedef QtPrivate::FunctionPointer<Func2> SlotType;
+ reinterpret_cast<typename SignalType::Object *>(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast<typename SignalType::Object *>(0));
+ //compilation error if the arguments does not match.
+ Q_STATIC_ASSERT_X((QtPrivate::CheckCompatibleArguments<typename SignalType::Arguments, typename SlotType::Arguments>::value),
+ "Signal and slot arguments are not compatible.");
+ return QObject::disconnectImpl(sender, reinterpret_cast<void **>(&signal),
+ receiverPrivate->q_func(), reinterpret_cast<void **>(&slot),
+ &SignalType::Object::staticMetaObject);
+}
Q_DECLARE_TYPEINFO(QObjectPrivate::Connection, Q_MOVABLE_TYPE);
Q_DECLARE_TYPEINFO(QObjectPrivate::Sender, Q_MOVABLE_TYPE);
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 <QtCore/qobject.h>
-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 <QtCore/qobjectdefs_impl.h>
-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 1452e720ad..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 <ogoffart@woboq.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -45,7 +46,10 @@
#error Do not include qobjectdefs_impl.h directly
#endif
-QT_BEGIN_HEADER
+#if 0
+#pragma qt_sync_skip_header_check
+#pragma qt_sync_stop_processing
+#endif
QT_BEGIN_NAMESPACE
@@ -90,7 +94,7 @@ namespace QtPrivate {
template <typename T>
struct ApplyReturnValue {
void *data;
- ApplyReturnValue(void *data_) : data(data_) {}
+ explicit ApplyReturnValue(void *data_) : data(data_) {}
};
template<typename T, typename U>
void operator,(const T &value, const ApplyReturnValue<U> &container) {
@@ -594,13 +598,44 @@ namespace QtPrivate {
enum { value = AreArgumentsCompatible<typename RemoveConstRef<Arg1>::Type, typename RemoveConstRef<Arg2>::Type>::value
&& CheckCompatibleArguments<List<Tail1...>, List<Tail2...>>::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 <typename Functor, typename ArgList> struct ComputeFunctorArgumentCount;
+
+ template <typename Functor, typename ArgList, bool Done> struct ComputeFunctorArgumentCountHelper
+ { enum { Value = -1 }; };
+ template <typename Functor, typename First, typename... ArgList>
+ struct ComputeFunctorArgumentCountHelper<Functor, List<First, ArgList...>, false>
+ : ComputeFunctorArgumentCount<Functor,
+ typename List_Left<List<First, ArgList...>, sizeof...(ArgList)>::Value> {};
+
+ template <typename Functor, typename... ArgList> struct ComputeFunctorArgumentCount<Functor, List<ArgList...>>
+ {
+ template <typename D> static D dummy();
+ template <typename F> static auto test(F f) -> decltype(((f.operator()((dummy<ArgList>())...)), int()));
+ static char test(...);
+ enum {
+ Ok = sizeof(test(dummy<Functor>())) == sizeof(int),
+ Value = Ok ? sizeof...(ArgList) : int(ComputeFunctorArgumentCountHelper<Functor, List<ArgList...>, Ok>::Value)
+ };
+ };
+ /* get the return type of a functor, given the signal argument list */
+ template <typename Functor, typename ArgList> struct FunctorReturnType;
+ template <typename Functor, typename ... ArgList> struct FunctorReturnType<Functor, List<ArgList...>> {
+ template <typename D> static D dummy();
+ typedef decltype(dummy<Functor>().operator()((dummy<ArgList>())...)) Value;
+ };
#endif
-}
+}
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/corelib/kernel/qpointer.h b/src/corelib/kernel/qpointer.h
index ebdeb156ba..230b6b66eb 100644
--- a/src/corelib/kernel/qpointer.h
+++ b/src/corelib/kernel/qpointer.h
@@ -46,67 +46,51 @@
#ifndef QT_NO_QOBJECT
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QVariant;
-class QPointerBase
-{
- QWeakPointer<QObject> 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 T>
-class QPointer : private QPointerBase
+class QPointer
{
+ template<typename U>
+ struct TypeSelector
+ {
+ typedef QObject Type;
+ };
+ template<typename U>
+ struct TypeSelector<const U>
+ {
+ typedef const QObject Type;
+ };
+ typedef typename TypeSelector<T>::Type QObjectType;
+ QWeakPointer<QObjectType> 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<T> &operator=(T* p)
- { QPointerBase::assign(p); return *this; }
+ { wp.assign(static_cast<QObjectType*>(p)); return *this; }
inline T* data() const
- { return static_cast<T*>(QPointerBase::data()); }
+ { return static_cast<T*>( 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 <class T> Q_DECLARE_TYPEINFO_BODY(QPointer<T>, Q_MOVABLE_TYPE);
-#if (!defined(Q_CC_SUN) || (__SUNPRO_CC >= 0x580)) // ambiguity between const T * and T *
-
template <class T>
inline bool operator==(const T *o, const QPointer<T> &p)
{ return o == p.operator->(); }
@@ -115,18 +99,6 @@ template<class T>
inline bool operator==(const QPointer<T> &p, const T *o)
{ return p.operator->() == o; }
-#else
-
-template<class T>
-inline bool operator==(const void *o, const QPointer<T> &p)
-{ return o == p.operator->(); }
-
-template<class T>
-inline bool operator==(const QPointer<T> &p, const void *o)
-{ return p.operator->() == o; }
-
-#endif
-
template <class T>
inline bool operator==(T *o, const QPointer<T> &p)
{ return o == p.operator->(); }
@@ -139,9 +111,6 @@ template<class T>
inline bool operator==(const QPointer<T> &p1, const QPointer<T> &p2)
{ return p1.operator->() == p2.operator->(); }
-
-#if (!defined(Q_CC_SUN) || (__SUNPRO_CC >= 0x580)) // ambiguity between const T * and T *
-
template <class T>
inline bool operator!=(const T *o, const QPointer<T> &p)
{ return o != p.operator->(); }
@@ -150,18 +119,6 @@ template<class T>
inline bool operator!= (const QPointer<T> &p, const T *o)
{ return p.operator->() != o; }
-#else
-
-template<class T>
-inline bool operator!= (const void *o, const QPointer<T> &p)
-{ return o != p.operator->(); }
-
-template<class T>
-inline bool operator!= (const QPointer<T> &p, const void *o)
-{ return p.operator->() != o; }
-
-#endif
-
template <class T>
inline bool operator!=(T *o, const QPointer<T> &p)
{ return o != p.operator->(); }
@@ -174,17 +131,6 @@ template<class T>
inline bool operator!= (const QPointer<T> &p1, const QPointer<T> &p2)
{ return p1.operator->() != p2.operator->() ; }
-// Make MSVC < 1400 (2005) handle "if (NULL == p)" syntax
-#if defined(Q_CC_MSVC) && (_MSC_VER < 1400)
-template<class T>
-inline bool operator== (int i, const QPointer<T> &p)
-{ Q_ASSERT(i == 0); return !i && p.isNull(); }
-
-template<class T>
-inline bool operator!= (int i, const QPointer<T> &p)
-{ Q_ASSERT(i == 0); return !i && !p.isNull(); }
-#endif
-
template<typename T>
QPointer<T>
qPointerFromVariant(const QVariant &variant)
@@ -194,8 +140,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 <QtCore/qobject.h>
-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/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 <sys/sem.h>
#endif
diff --git a/src/corelib/kernel/qsharedmemory_unix.cpp b/src/corelib/kernel/qsharedmemory_unix.cpp
index 7f13e3b1a2..fdd73657a9 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) {
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 <QtCore/qobject.h>
-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 <QtCore/qobject.h>
-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/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.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 <QtCore/qstring.h>
#include <QtCore/qscopedpointer.h>
-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/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_windows.h>
QT_BEGIN_NAMESPACE
-
+
#ifndef QT_NO_SYSTEMSEMAPHORE
QSystemSemaphorePrivate::QSystemSemaphorePrivate() :
diff --git a/src/corelib/kernel/qtimer.h b/src/corelib/kernel/qtimer.h
index 9a90ecc772..3484f4dba8 100644
--- a/src/corelib/kernel/qtimer.h
+++ b/src/corelib/kernel/qtimer.h
@@ -42,13 +42,13 @@
#ifndef QTIMER_H
#define QTIMER_H
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_QOBJECT
#include <QtCore/qbasictimer.h> // conceptual inheritance
#include <QtCore/qobject.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -114,8 +114,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/qtimerinfo_unix.cpp b/src/corelib/kernel/qtimerinfo_unix.cpp
index 7a29247fc5..0e33fa697a 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,24 +87,24 @@ QTimerInfoList::QTimerInfoList()
firstTimerInfo = 0;
}
-timeval QTimerInfoList::updateCurrentTime()
+timespec QTimerInfoList::updateCurrentTime()
{
return (currentTime = qt_gettime());
}
#if ((_POSIX_MONOTONIC_CLOCK-0 <= 0) && !defined(Q_OS_MAC) && !defined(Q_OS_INTEGRITY)) || defined(QT_BOOTSTRAPPED)
-timeval qAbsTimeval(const timeval &t)
+timespec qAbsTimespec(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);
}
/*
@@ -114,7 +114,7 @@ timeval qAbsTimeval(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)
@@ -124,13 +124,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;
@@ -140,16 +140,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;
- return elapsedTimeTicks < ((qAbsTimeval(*delta) - tickGranularity) * 10);
+ tickGranularity.tv_nsec = msPerTick * 1000 * 1000;
+ return elapsedTimeTicks < ((qAbsTimespec(*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) {
@@ -162,7 +162,7 @@ void QTimerInfoList::repairTimersIfNeeded()
{
if (QElapsedTimer::isMonotonic())
return;
- timeval delta;
+ timespec delta;
if (timeChanged(&delta))
timerRepair(delta);
}
@@ -189,27 +189,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
@@ -226,7 +226,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
@@ -245,7 +245,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
@@ -327,16 +327,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:
@@ -382,9 +382,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
@@ -405,7 +405,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;
@@ -418,9 +418,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);
@@ -428,7 +428,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;
}
@@ -451,7 +451,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:
@@ -486,10 +486,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;
}
@@ -573,7 +573,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<QTimerInfo*>
{
#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<QTimerInfo*>
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/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 <QtCore/qobject.h>
#include <QtCore/qbytearray.h>
-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.cpp b/src/corelib/kernel/qvariant.cpp
index d70d8d9a68..ed1a8a4974 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 &regExp)
: d(RegExp)
{ v_construct<QRegExp>(&d, regExp); }
+#endif // QT_NO_REGEXP
#ifndef QT_BOOTSTRAPPED
+#ifndef QT_NO_REGULAREXPRESSION
QVariant::QVariant(const QRegularExpression &re)
: d(RegularExpression)
{ v_construct<QRegularExpression>(&d, re); }
+#endif
QVariant::QVariant(const QUuid &uuid)
: d(Uuid)
{ v_construct<QUuid>(&d, uuid); }
@@ -1552,7 +1555,6 @@ QVariant::QVariant(const QJsonDocument &jsonDocument)
: d(QMetaType::QJsonDocument)
{ v_construct<QJsonDocument>(&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<QRegularExpression>(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 d21f48f98c..6f212f5000 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -51,8 +51,6 @@
#include <QtCore/qstring.h>
#include <QtCore/qobject.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -76,8 +74,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 +240,11 @@ class Q_CORE_EXPORT QVariant
QVariant(const QLocale &locale);
#ifndef QT_NO_REGEXP
QVariant(const QRegExp &regExp);
-#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 +253,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 +313,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 +326,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);
@@ -484,7 +484,7 @@ public:
template <typename T>
inline QVariant qVariantFromValue(const T &t)
{
- return QVariant(qMetaTypeId<T>(reinterpret_cast<T *>(0)), &t, QTypeInfo<T>::isPointer);
+ return QVariant(qMetaTypeId<T>(), &t, QTypeInfo<T>::isPointer);
}
template <>
@@ -494,7 +494,7 @@ template <typename T>
inline void qVariantSetValue(QVariant &v, const T &t)
{
//if possible we reuse the current QVariant private
- const uint type = qMetaTypeId<T>(reinterpret_cast<T *>(0));
+ const uint type = qMetaTypeId<T>();
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<T>(static_cast<T *>(0));
+ const int vid = qMetaTypeId<T>();
if (vid == v.userType())
return *reinterpret_cast<const T *>(v.constData());
if (vid < int(QMetaType::User)) {
@@ -620,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/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 <class T>
inline void v_clear(QVariant::Private *d, T* = 0)
{
-
+
if (!QVariantIntegrator<T>::CanUseInternalSpace) {
//now we need to cast
//because QVariant::PrivateShared doesn't have a virtual destructor
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 <QtCore/qmimetype.h>
#include <QtCore/qstringlist.h>
-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 <QtCore/qshareddata.h>
#include <QtCore/qstring.h>
-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 <QtCore/qobject.h>
#include <QtCore/qstringlist.h>
-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.cpp b/src/corelib/plugin/qlibrary.cpp
index d17067684a..3432f9619d 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,134 @@ static void installCoverageTool(QLibraryPrivate *libPrivate)
#endif
}
-typedef QMap<QString, QLibraryPrivate*> 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<QString, QLibraryPrivate*> LibraryMap;
LibraryMap libraryMap;
- QSet<QLibraryPrivate*> 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) {
+ 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);
+#else
+ lib->unload();
+#endif
+ }
+ delete lib;
+ it.value() = 0;
+ }
+ }
+
+ 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()
+{
+ if (Q_UNLIKELY(!qt_library_data))
+ qt_library_data = new QLibraryStore;
+ return qt_library_data;
+}
-static LibraryMap *libraryMap()
+inline QLibraryPrivate *QLibraryStore::findOrCreate(const QString &fileName, const QString &version)
{
- LibraryData *data = libraryData();
- return data ? &data->libraryMap : 0;
+ 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 +477,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,32 +490,27 @@ 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);
}
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
+ if (libraryUnloadCount.load() > 0 && !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
- if (LibraryData *lib = libraryData()) {
- if (lib->loadedLibs.remove(this))
- libraryRefCount.deref();
- }
+ libraryRefCount.deref();
pHnd = 0;
instance = 0;
}
@@ -439,9 +521,7 @@ bool QLibraryPrivate::unload()
void QLibraryPrivate::release()
{
- QMutexLocker locker(&qt_library_mutex);
- if (!libraryRefCount.deref())
- delete this;
+ QLibraryStore::releaseLibrary(this);
}
bool QLibraryPrivate::loadPlugin()
@@ -631,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;
@@ -656,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.h b/src/corelib/plugin/qlibrary.h
index f99c69c2d7..865bb8c3e3 100644
--- a/src/corelib/plugin/qlibrary.h
+++ b/src/corelib/plugin/qlibrary.h
@@ -44,16 +44,8 @@
#include <QtCore/qobject.h>
-QT_BEGIN_HEADER
-
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;
@@ -111,6 +103,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QLibrary::LoadHints)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif //QLIBRARY_H
diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h
index 28bec300eb..abf11be9f7 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:
@@ -82,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 *);
@@ -124,11 +127,13 @@ 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;
- friend class QLibraryPrivateHasFriends;
+ friend class QLibraryStore;
};
QT_END_NAMESPACE
diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp
index 5044d09e9b..2aed877e6b 100644
--- a/src/corelib/plugin/qlibrary_unix.cpp
+++ b/src/corelib/plugin/qlibrary_unix.cpp
@@ -56,7 +56,7 @@
#include <string.h>
#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
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 <private/qfilesystementry_p.h>
-#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 <qt_windows.h>
@@ -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/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 <QtCore/qobject.h>
#include <QtCore/qpointer.h>
-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..8f8833e839 100644
--- a/src/corelib/plugin/qpluginloader.h
+++ b/src/corelib/plugin/qpluginloader.h
@@ -44,15 +44,8 @@
#include <QtCore/qlibrary.h>
-#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_HEADER
-
QT_BEGIN_NAMESPACE
class QLibraryPrivate;
@@ -93,8 +86,6 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QT_NO_LIBRARY
#endif //QPLUGINLOADER_H
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/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 <QtCore/qstring.h>
-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 <QtCore/qobject.h>
-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 <QtCore/qlist.h>
-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 <QtCore/qabstracttransition.h>
#include <QtCore/qcoreevent.h>
-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 <QtCore/qabstractstate.h>
-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 <QtCore/qabstractstate.h>
-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 <QtCore/qabstracttransition.h>
-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 <QtCore/qlist.h>
-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 <QtCore/qset.h>
#include <QtCore/qvariant.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -195,6 +193,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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<QPointer<QObject>, QByteArray> RestorableId;
QHash<QAbstractState*, QHash<RestorableId, QVariant> > registeredRestorablesForState;
@@ -235,7 +235,7 @@ public:
bool animated;
QPair<QList<QAbstractAnimation*>, QList<QAbstractAnimation*> >
- initializeAnimation(QAbstractAnimation *abstractAnimation,
+ initializeAnimation(QAbstractAnimation *abstractAnimation,
const QPropertyAssignment &prop);
QHash<QAbstractState*, QList<QAbstractAnimation*> > animationsForState;
@@ -274,7 +274,7 @@ public:
QHash<int, DelayedEvent> delayedEvents;
QHash<int, int> 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/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 <QtCore/qbasicatomic.h>
-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..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 <QtCore/qatomic_bootstrap.h>
// Compiler dependent implementation
@@ -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.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/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 <exception>
#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 <QtCore/qfutureinterface.h>
#include <QtCore/qstring.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -269,7 +268,6 @@ QFuture<void> qToVoidFuture(const QFuture<T> &future)
}
QT_END_NAMESPACE
-QT_END_HEADER
#endif // QT_NO_QFUTURE
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 6ab1409f55..e0a59697a1 100644
--- a/src/corelib/thread/qfutureinterface.h
+++ b/src/corelib/thread/qfutureinterface.h
@@ -50,7 +50,6 @@
#include <QtCore/qexception.h>
#include <QtCore/qresultstore.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -235,7 +234,7 @@ inline void QFutureInterface<T>::reportResults(const QVector<T> &_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());
}
}
@@ -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..39dbfc52a8 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
@@ -81,7 +80,7 @@ public:
m_futures[i].cancel();
}
}
-
+
for (int i = 0; i < m_futures.count(); ++i) {
m_futures[i].waitForFinished();
}
@@ -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 <QtCore/qobject.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -215,8 +214,6 @@ Q_INLINE_TEMPLATE void QFutureWatcher<void>::setFuture(const QFuture<void> &_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..a0a851eabb 100644
--- a/src/corelib/thread/qgenericatomic.h
+++ b/src/corelib/thread/qgenericatomic.h
@@ -44,14 +44,12 @@
#include <QtCore/qglobal.h>
-QT_BEGIN_HEADER
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
@@ -241,6 +239,4 @@ template <typename BaseClass> 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 <QtCore/qatomic.h>
#include <new>
-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/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 <errno.h>
+#include <sys/time.h>
+#include <time.h>
#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/qoldbasicatomic.h b/src/corelib/thread/qoldbasicatomic.h
index 15785e2232..b755256ff7 100644
--- a/src/corelib/thread/qoldbasicatomic.h
+++ b/src/corelib/thread/qoldbasicatomic.h
@@ -44,16 +44,13 @@
#include <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
#if 0
// silence syncqt warnings
QT_END_NAMESPACE
-QT_END_HEADER
-
+#pragma qt_sync_skip_header_check
#pragma qt_no_master_include
#pragma qt_sync_stop_processing
#endif
@@ -142,6 +139,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.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/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 <QtCore/qglobal.h>
-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.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<int, ResultItem>::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 8c1787bc11..11ce23936d 100644
--- a/src/corelib/thread/qresultstore.h
+++ b/src/corelib/thread/qresultstore.h
@@ -49,7 +49,6 @@
#include <QtCore/qmap.h>
#include <QtCore/qdebug.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -149,7 +148,7 @@ protected:
bool m_filterMode;
QMap<int, ResultItem> pendingResults;
int filteredResults;
-
+
};
template <typename T>
@@ -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.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/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 <QtCore/qglobal.h>
-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 <QtCore/qglobal.h>
-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.cpp b/src/corelib/thread/qthread.cpp
index bd8c6341c1..dd4d4e74ae 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;
@@ -523,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/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 <limits.h>
-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/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 8abf1d06ef..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();
@@ -287,7 +292,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 +331,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
@@ -415,6 +420,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)
@@ -488,8 +500,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;
@@ -612,7 +636,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);
@@ -654,7 +678,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/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();
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/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 <limits.h>
-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/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 <errno.h>
+#include <sys/time.h>
+#include <time.h>
#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;
}
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/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 <QtCore/qglobal.h>
-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/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 <QtAlgorithms>
@@ -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 <QtAlgorithms>
@@ -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 <QtAlgorithms>
@@ -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 <QtAlgorithms>
@@ -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 <QtAlgorithms>
@@ -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 <QtAlgorithms>
@@ -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 <QtAlgorithms>
@@ -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 <QtAlgorithms>
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 <QtCore/qrefcount.h>
#include <string.h>
-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 <new>
#include <string.h>
-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 <QtCore/qarraydataops.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
template <class T>
@@ -219,6 +217,4 @@ namespace std
}
}
-QT_END_HEADER
-
#endif // include guard
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<uchar*>(d.data()) + 1;
const uchar *a2 = reinterpret_cast<const uchar*>(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<uchar*>(d.data()) + 1;
const uchar *a2 = reinterpret_cast<const uchar *>(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/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 <QtCore/qbytearray.h>
-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.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/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 <QtCore/qstring.h>
#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 <QtCore/qbytearray.h>
-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 <QtCore/qhash.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -200,6 +198,4 @@ void QCache<Key,T>::trim(int m)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QCACHE_H
diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp
index 6fdb3215b0..8545276dac 100644
--- a/src/corelib/tools/qchar.cpp
+++ b/src/corelib/tools/qchar.cpp
@@ -263,6 +263,132 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \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
This enum type defines the Unicode direction attributes. See the
@@ -1159,6 +1285,27 @@ unsigned char QChar::combiningClass(uint ucs4)
}
/*!
+ \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
Returns the Unicode version that introduced this character.
diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h
index 20101db975..8afa05bb00 100644
--- a/src/corelib/tools/qchar.h
+++ b/src/corelib/tools/qchar.h
@@ -44,8 +44,6 @@
#include <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -137,6 +135,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 +353,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 +440,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();
@@ -398,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 <QtCore/qstring.h>
#include <QtCore/qlocale.h>
-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 <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -65,6 +63,4 @@ template <class T> class QVector;
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QCONTAINERFWD_H
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/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 <limits.h>
#include <new>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
#undef QT_QCONTIGUOUSCACHE_DEBUG
@@ -464,6 +462,4 @@ inline T QContiguousCache<T>::takeLast()
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp
index 3f17fe15aa..32f5f0b33a 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 <rich@kde.org>.
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -40,12 +41,51 @@
****************************************************************************/
#include <qcryptographichash.h>
+#include <qiodevice.h>
+
+#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;
+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
@@ -88,8 +128,6 @@ static int SHA384_512AddLength(SHA512Context *context, unsigned int length);
#undef uint68_t
#undef int_least16_t
-#include <qiodevice.h>
-
static inline int SHA224_256AddLength(SHA256Context *context, unsigned int length)
{
QT_PREPEND_NAMESPACE(quint32) addTemp;
@@ -100,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
@@ -108,13 +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;
};
@@ -141,10 +183,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
*/
/*!
@@ -171,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;
@@ -192,6 +244,19 @@ 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;
+#endif
}
d->result.clear();
}
@@ -203,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<const unsigned char *>(data), length);
break;
@@ -224,7 +295,20 @@ void QCryptographicHash::addData(const char *data, int length)
case Sha512:
SHA512Input(&d->sha512Context, reinterpret_cast<const unsigned char *>(data), length);
break;
- }
+ case Sha3_224:
+ sha3Update(&d->sha3Context, reinterpret_cast<const BitSequence *>(data), length*8);
+ break;
+ case Sha3_256:
+ sha3Update(&d->sha3Context, reinterpret_cast<const BitSequence *>(data), length*8);
+ break;
+ case Sha3_384:
+ sha3Update(&d->sha3Context, reinterpret_cast<const BitSequence *>(data), length*8);
+ break;
+ case Sha3_512:
+ sha3Update(&d->sha3Context, reinterpret_cast<const BitSequence *>(data), length*8);
+ break;
+#endif
+ }
d->result.clear();
}
@@ -266,10 +350,23 @@ bool QCryptographicHash::addData(QIODevice* device)
*/
QByteArray QCryptographicHash::result() const
{
- if (!d->result.isEmpty())
+ if (!d->result.isEmpty())
return d->result;
switch (d->method) {
+ case Sha1: {
+ Sha1State copy = d->sha1Context;
+ d->result.resize(20);
+ sha1FinalizeState(&copy);
+ sha1ToHash(&copy, (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);
@@ -282,13 +379,6 @@ QByteArray QCryptographicHash::result() const
MD5Final(&copy, (unsigned char *)d->result.data());
break;
}
- case Sha1: {
- Sha1State copy = d->sha1Context;
- d->result.resize(20);
- sha1FinalizeState(&copy);
- sha1ToHash(&copy, (unsigned char *)d->result.data());
- break;
- }
case Sha224: {
SHA224Context copy = d->sha224Context;
d->result.resize(SHA224HashSize);
@@ -313,6 +403,31 @@ QByteArray QCryptographicHash::result() const
SHA512Result(&copy, reinterpret_cast<unsigned char *>(d->result.data()));
break;
}
+ case Sha3_224: {
+ SHA3Context copy = d->sha3Context;
+ d->result.resize(224/8);
+ sha3Final(&copy, reinterpret_cast<BitSequence *>(d->result.data()));
+ break;
+ }
+ case Sha3_256: {
+ SHA3Context copy = d->sha3Context;
+ d->result.resize(256/8);
+ sha3Final(&copy, reinterpret_cast<BitSequence *>(d->result.data()));
+ break;
+ }
+ case Sha3_384: {
+ SHA3Context copy = d->sha3Context;
+ d->result.resize(384/8);
+ sha3Final(&copy, reinterpret_cast<BitSequence *>(d->result.data()));
+ break;
+ }
+ case Sha3_512: {
+ SHA3Context copy = d->sha3Context;
+ d->result.resize(512/8);
+ sha3Final(&copy, reinterpret_cast<BitSequence *>(d->result.data()));
+ break;
+ }
+#endif
}
return d->result;
}
diff --git a/src/corelib/tools/qcryptographichash.h b/src/corelib/tools/qcryptographichash.h
index 1a7e3751e8..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 <rich@kde.org>.
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -44,8 +45,6 @@
#include <QtCore/qbytearray.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -62,7 +61,11 @@ public:
Sha224,
Sha256,
Sha384,
- Sha512
+ Sha512,
+ Sha3_224,
+ Sha3_256,
+ Sha3_384,
+ Sha3_512
};
explicit QCryptographicHash(Algorithm method);
@@ -84,6 +87,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index 88f22daad5..31c870b012 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;
@@ -549,8 +544,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 +591,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 +633,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 +675,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 +713,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
@@ -2409,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<qint64>::min()}) to \a msecs will result in
+ undefined behavior.
\sa toMSecsSinceEpoch(), setTime_t()
*/
@@ -4015,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);
@@ -4093,7 +4088,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.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 <limits>
-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/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
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 <QtCore/qpoint.h>
#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 <QtCore/qglobal.h>
-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/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 e719358ce0..f81a723aa5 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 <sys/time.h>
#include <time.h>
+#endif
#include <unistd.h>
#include <qatomic.h>
@@ -168,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/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 <QtCore/qatomic.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -288,6 +286,4 @@ inline void QFreeList<T, ConstantsType>::release(int id)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QFREELIST_P_H
diff --git a/src/corelib/tools/qharfbuzz_p.h b/src/corelib/tools/qharfbuzz_p.h
index 1cbfb03f63..27ddb44e91 100644
--- a/src/corelib/tools/qharfbuzz_p.h
+++ b/src/corelib/tools/qharfbuzz_p.h
@@ -53,11 +53,308 @@
#ifndef QHARFBUZZ_P_H
#define QHARFBUZZ_P_H
-#include <QtCore/qglobal.h>
-#include <private/harfbuzz-shaper.h>
+#include <QtCore/qchar.h>
+
+#if defined(QT_BUILD_CORE_LIB)
+# include <harfbuzz-shaper.h>
+#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 <string> */
+ 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 <glyphs> array contains glyph indices ready to be shaped */
+ hb_uint32 initialGlyphCount; /* input: if glyphIndicesPresent is true, the number of glyph indices in the <glyphs> array */
+
+ hb_uint32 num_glyphs; /* input: capacity of output arrays <glyphs>, <attributes>, <advances>, <offsets>, and <log_clusters>; */
+ /* output: required capacity (may be larger than actual capacity) */
+
+ HB_Glyph *glyphs; /* output: <num_glyphs> indices of shaped glyphs */
+ HB_GlyphAttributes *attributes; /* output: <num_glyphs> glyph attributes */
+ HB_Fixed *advances; /* output: <num_glyphs> advances */
+ HB_FixedPoint *offsets; /* output: <num_glyphs> 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
+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
@@ -70,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/qhash.cpp b/src/corelib/tools/qhash.cpp
index 0103a208f3..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<T1, T2> &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().
@@ -924,6 +924,16 @@ void QHashData::checkSanity()
\sa clear()
*/
+/*! \fn QHash::QHash(std::initializer_list<std::pair<Key,T> > 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<Key, T> &other)
Constructs a copy of \a other.
@@ -1981,6 +1991,16 @@ void QHashData::checkSanity()
Constructs an empty hash.
*/
+/*! \fn QMultiHash::QMultiHash(std::initializer_list<std::pair<Key,T> > 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<Key, T> &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..5d9238f453 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -48,7 +48,9 @@
#include <QtCore/qpair.h>
#include <QtCore/qrefcount.h>
-QT_BEGIN_HEADER
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+#include <initializer_list>
+#endif
QT_BEGIN_NAMESPACE
@@ -285,6 +287,15 @@ class QHash
public:
inline QHash() : d(const_cast<QHashData *>(&QHashData::shared_null)) { }
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ inline QHash(std::initializer_list<std::pair<Key,T> > list)
+ : d(const_cast<QHashData *>(&QHashData::shared_null))
+ {
+ reserve(list.size());
+ for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it)
+ insert(it->first, it->second);
+ }
+#endif
inline QHash(const QHash<Key, T> &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); }
inline ~QHash() { if (!d->ref.deref()) freeData(d); }
@@ -921,6 +932,14 @@ class QMultiHash : public QHash<Key, T>
{
public:
QMultiHash() {}
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ inline QMultiHash(std::initializer_list<std::pair<Key,T> > list)
+ {
+ this->reserve(list.size());
+ for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it)
+ insert(it->first, it->second);
+ }
+#endif
QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {}
inline void swap(QMultiHash<Key, T> &other) { QHash<Key, T>::swap(other); } // prevent QMultiHash<->QHash swaps
@@ -1034,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 <QtCore/qglobal.h>
-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/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/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 <QtCore/qpoint.h>
-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 <iterator>
#include <list>
-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 <limits.h>
#include <string.h>
-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.cpp b/src/corelib/tools/qlocale.cpp
index 365033d84a..21a01c4867 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);
@@ -1327,6 +1327,224 @@ double QLocale::toDouble(const QString &s, bool *ok) const
}
/*!
+ 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.
\sa toLongLong()
@@ -2892,12 +3110,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 +3261,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 +3280,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 +3300,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;
@@ -3080,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 4283a31c43..6199cdb19b 100644
--- a/src/corelib/tools/qlocale.h
+++ b/src/corelib/tools/qlocale.h
@@ -47,8 +47,6 @@
#include <QtCore/qobjectdefs.h>
#include <QtCore/qshareddata.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -69,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;
@@ -207,7 +206,7 @@ public:
Turkish = 125,
Turkmen = 126,
Tahitian = 127,
- Uigur = 128,
+ Uighur = 128,
Ukrainian = 129,
Urdu = 130,
Uzbek = 131,
@@ -340,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,
@@ -353,7 +403,8 @@ public:
RhaetoRomance = Romansh,
Chewa = Nyanja,
Frisian = WesternFrisian,
- LastLanguage = Ngiemboon
+ Uigur = Uighur,
+ LastLanguage = Ugaritic
};
enum Script {
@@ -393,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,
@@ -712,6 +830,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;
@@ -843,6 +970,4 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QLocale &);
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QLOCALE_H
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_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 <errno.h>
+#include <sys/pps.h>
+#include <unistd.h>
+
+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", &regionFd);
+}
+
+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_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
diff --git a/src/corelib/tools/qlocale_mac.mm b/src/corelib/tools/qlocale_mac.mm
index 0c35860b56..8594cfd40d 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/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h
index 3746cd56e6..4c0432bba7 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
@@ -238,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);
@@ -311,13 +311,17 @@ 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);
static quint64 bytearrayToUnsLongLong(const char *num, int base, bool *ok);
typedef QVarLengthArray<char, 256> 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;
@@ -373,28 +377,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 <QtCore/private/qcore_unix_p.h>
-#include <QCoreApplication>
-
-#include <unistd.h>
-#include <errno.h>
-#include <sys/pps.h>
-#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/qmap.cpp b/src/corelib/tools/qmap.cpp
index 75104e4825..e5de4a1bfd 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<std::pair<Key,T> > 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<Key, T> QMap::toStdMap() const
Returns an STL map equivalent to this QMap.
@@ -971,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.
@@ -983,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<Key, T> &QMap::unite(const QMap<Key, T> &other)
Inserts all the items in the \a other map into this map. If a
@@ -1576,6 +1632,16 @@ void QMapDataBase::freeData(QMapDataBase *d)
Constructs an empty map.
*/
+/*! \fn QMultiMap::QMultiMap(std::initializer_list<std::pair<Key,T> > 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<Key, T> &other)
Constructs a copy of \a other (which can be a QMap or a
@@ -1609,6 +1675,23 @@ void QMapDataBase::freeData(QMapDataBase *d)
\sa replace()
*/
+/*! \fn QMultiMap::iterator QMultiMap::insert(QMap<Key, T>::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 b0ec6fb3c6..449fcbca0a 100644
--- a/src/corelib/tools/qmap.h
+++ b/src/corelib/tools/qmap.h
@@ -54,7 +54,9 @@
#include <map>
#include <new>
-QT_BEGIN_HEADER
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+#include <initializer_list>
+#endif
QT_BEGIN_NAMESPACE
@@ -327,6 +329,14 @@ class QMap
public:
inline QMap() : d(static_cast<QMapData<Key, T> *>(const_cast<QMapDataBase *>(&QMapDataBase::shared_null))) { }
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ inline QMap(std::initializer_list<std::pair<Key,T> > list)
+ : d(static_cast<QMapData<Key, T> *>(const_cast<QMapDataBase *>(&QMapDataBase::shared_null)))
+ {
+ for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it)
+ insert(it->first, it->second);
+ }
+#endif
QMap(const QMap<Key, T> &other);
inline ~QMap() { if (!d->ref.deref()) d->destroy(); }
@@ -528,7 +538,9 @@ 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);
+ iterator insertMulti(const_iterator pos, const Key &akey, const T &avalue);
QMap<Key, T> &unite(const QMap<Key, T> &other);
// STL compatibility
@@ -653,6 +665,72 @@ Q_INLINE_TEMPLATE typename QMap<Key, T>::iterator QMap<Key, T>::insert(const Key
}
template <class Key, class T>
+typename QMap<Key, T>::iterator QMap<Key, T>::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<Node *>(pos.i->left);
+ if (n) {
+ while (n->right)
+ n = static_cast<Node *>(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<Node*>(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<Node*>(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 <class Key, class T>
Q_INLINE_TEMPLATE typename QMap<Key, T>::iterator QMap<Key, T>::insertMulti(const Key &akey,
const T &avalue)
{
@@ -670,6 +748,57 @@ Q_INLINE_TEMPLATE typename QMap<Key, T>::iterator QMap<Key, T>::insertMulti(cons
}
template <class Key, class T>
+typename QMap<Key, T>::iterator QMap<Key, T>::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<Node *>(pos.i->left);
+ if (n) {
+ while (n->right)
+ n = static_cast<Node *>(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<Node*>(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<Node*>(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 <class Key, class T>
Q_INLINE_TEMPLATE typename QMap<Key, T>::const_iterator QMap<Key, T>::constFind(const Key &akey) const
{
Node *n = d->findNode(akey);
@@ -960,6 +1089,13 @@ class QMultiMap : public QMap<Key, T>
{
public:
QMultiMap() {}
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ inline QMultiMap(std::initializer_list<std::pair<Key,T> > list)
+ {
+ for (typename std::initializer_list<std::pair<Key,T> >::const_iterator it = list.begin(); it != list.end(); ++it)
+ insert(it->first, it->second);
+ }
+#endif
QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {}
inline void swap(QMultiMap<Key, T> &other) { QMap<Key, T>::swap(other); }
@@ -967,6 +1103,8 @@ public:
{ return QMap<Key, T>::insert(key, value); }
inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value)
{ return QMap<Key, T>::insertMulti(key, value); }
+ inline typename QMap<Key, T>::iterator insert(typename QMap<Key, T>::const_iterator pos, const Key &key, const T &value)
+ { return QMap<Key, T>::insertMulti(pos, key, value); }
inline QMultiMap &operator+=(const QMultiMap &other)
{ this->unite(other); return *this; }
@@ -1072,6 +1210,4 @@ Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(Map)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QMAP_H
diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp
index 7b9d68707e..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.
@@ -157,6 +157,240 @@ 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
+*/
+
+/*!
+ \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 d927cb5aa1..0d68be961e 100644
--- a/src/corelib/tools/qmargins.h
+++ b/src/corelib/tools/qmargins.h
@@ -42,9 +42,7 @@
#ifndef QMARGINS_H
#define QMARGINS_H
-#include <QtCore/qnamespace.h>
-
-QT_BEGIN_HEADER
+#include <QtCore/qrect.h>
QT_BEGIN_NAMESPACE
@@ -67,6 +65,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;
@@ -142,12 +149,128 @@ 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;
+}
+
+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
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QMARGINS_H
diff --git a/src/corelib/tools/qmessageauthenticationcode.cpp b/src/corelib/tools/qmessageauthenticationcode.cpp
new file mode 100644
index 0000000000..becaaaa704
--- /dev/null
+++ b/src/corelib/tools/qmessageauthenticationcode.cpp
@@ -0,0 +1,283 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Ruslan Nigmatullin <euroelessar@yandex.ru>
+** 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 <stdint.h>' 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;
+ 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;
+}
+
+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<char> 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<char> 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..77c22152e4
--- /dev/null
+++ b/src/corelib/tools/qmessageauthenticationcode.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Ruslan Nigmatullin <euroelessar@yandex.ru>
+** 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 <QtCore/qcryptographichash.h>
+
+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
+
+#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 <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -108,6 +106,4 @@ Q_OUTOFLINE_TEMPLATE QPair<T1, T2> qMakePair(const T1 &x, const T2 &y)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPAIR_H
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\<T1, T2\> 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/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 <QtCore/qvarlengtharray.h>
-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.cpp b/src/corelib/tools/qpoint.cpp
index b3dd918a35..784d96bf1c 100644
--- a/src/corelib/tools/qpoint.cpp
+++ b/src/corelib/tools/qpoint.cpp
@@ -223,6 +223,15 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \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
@@ -712,6 +721,15 @@ QDebug operator<<(QDebug d, const QPointF &p)
*/
/*!
+ \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..69403ebc53 100644
--- a/src/corelib/tools/qpoint.h
+++ b/src/corelib/tools/qpoint.h
@@ -44,8 +44,6 @@
#include <QtCore/qnamespace.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -76,6 +74,9 @@ public:
inline QPoint &operator/=(qreal divisor);
+ 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 &);
friend Q_DECL_CONSTEXPR inline const QPoint operator+(const QPoint &, const QPoint &);
@@ -233,6 +234,9 @@ public:
inline QPointF &operator*=(qreal c);
inline QPointF &operator/=(qreal c);
+ 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 &);
friend Q_DECL_CONSTEXPR inline const QPointF operator+(const QPointF &, const QPointF &);
@@ -393,6 +397,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 <QtCore/qlist.h>
-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 2ad049652f..62ebdd10cd 100644
--- a/src/corelib/tools/qrect.h
+++ b/src/corelib/tools/qrect.h
@@ -49,10 +49,9 @@
#error qrect.h must be included before any header file that defines topLeft
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
+class QMargins;
class Q_CORE_EXPORT QRect
{
@@ -139,6 +138,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); }
@@ -786,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 <QtCore/qatomic.h>
-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.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/qregexp.h b/src/corelib/tools/qregexp.h
index f5003fed0a..26b0b78317 100644
--- a/src/corelib/tools/qregexp.h
+++ b/src/corelib/tools/qregexp.h
@@ -42,12 +42,12 @@
#ifndef QREGEXP_H
#define QREGEXP_H
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_REGEXP
#include <QtCore/qstring.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -129,8 +129,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.cpp b/src/corelib/tools/qregularexpression.cpp
index a18d8af898..a50c7da6cc 100644
--- a/src/corelib/tools/qregularexpression.cpp
+++ b/src/corelib/tools/qregularexpression.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Giuseppe D'Angelo <dangelog@gmail.com>.
+** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
@@ -49,6 +50,7 @@
#include <QtCore/qdebug.h>
#include <QtCore/qthreadstorage.h>
#include <QtCore/qglobal.h>
+#include <QtCore/qatomic.h>
#include <pcre.h>
@@ -725,6 +727,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.
*/
/*!
@@ -793,7 +802,7 @@ struct QRegularExpressionPrivate : QSharedData
void cleanCompiledPattern();
void compilePattern();
void getPatternInfo();
- pcre16_extra *optimizePattern();
+ void optimizePattern();
QRegularExpressionMatchPrivate *doMatch(const QString &subject,
int offset,
@@ -819,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<pcre16_extra> studyData;
const char *errorString;
int errorOffset;
int capturingCount;
@@ -834,7 +843,7 @@ struct QRegularExpressionMatchPrivate : QSharedData
const QString &subject,
QRegularExpression::MatchType matchType,
QRegularExpression::MatchOptions matchOptions,
- int capturingCount);
+ int capturingCount = 0);
QRegularExpressionMatch nextMatch() const;
@@ -926,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;
@@ -959,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();
@@ -971,12 +980,13 @@ void QRegularExpressionPrivate::compilePattern()
void QRegularExpressionPrivate::getPatternInfo()
{
Q_ASSERT(compiledPattern);
+ Q_ASSERT(studyData.load() == 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) {
@@ -1004,6 +1014,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));
+ }
}
@@ -1084,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();
@@ -1103,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);
}
/*!
@@ -1193,19 +1212,33 @@ QRegularExpressionMatchPrivate *QRegularExpressionPrivate::doMatch(const QString
QRegularExpression re(*const_cast<QRegularExpressionPrivate *>(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);
+ 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<QRegularExpressionPrivate *>(this)->optimizePattern();
+ const_cast<QRegularExpressionPrivate *>(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);
@@ -1311,8 +1344,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);
+ }
}
@@ -1468,6 +1503,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
@@ -1478,6 +1515,71 @@ int QRegularExpression::captureCount() const
}
/*!
+ \since 5.1
+
+ 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
+ (?<day>\d\d)-(?<month>\d\d)-(?<year>\d\d\d\d) (\w+) (?<name>\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.
+
+ \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
errorString() to obtain a textual description of the error.
@@ -1639,6 +1741,26 @@ QString QRegularExpression::escape(const QString &str)
}
/*!
+ \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.
*/
QRegularExpressionMatch::~QRegularExpressionMatch()
@@ -1982,6 +2104,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.
*/
QRegularExpressionMatchIterator::~QRegularExpressionMatchIterator()
diff --git a/src/corelib/tools/qregularexpression.h b/src/corelib/tools/qregularexpression.h
index 4c95a5b3a0..5059ea6431 100644
--- a/src/corelib/tools/qregularexpression.h
+++ b/src/corelib/tools/qregularexpression.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Giuseppe D'Angelo <dangelog@gmail.com>.
+** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -42,14 +43,15 @@
#ifndef QREGULAREXPRESSION_H
#define QREGULAREXPRESSION_H
-#ifndef QT_NO_REGEXP
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_REGULAREXPRESSION
#include <QtCore/qstring.h>
+#include <QtCore/qstringlist.h>
#include <QtCore/qshareddata.h>
#include <QtCore/qvariant.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QRegularExpressionMatch;
@@ -95,11 +97,13 @@ public:
QString errorString() const;
int captureCount() const;
+ QStringList namedCaptureGroups() const;
enum MatchType {
NormalMatch = 0,
PartialPreferCompleteMatch,
- PartialPreferFirstMatch
+ PartialPreferFirstMatch,
+ NoMatch
};
enum MatchOption {
@@ -152,6 +156,7 @@ struct QRegularExpressionMatchPrivate;
class Q_CORE_EXPORT QRegularExpressionMatch
{
public:
+ QRegularExpressionMatch();
~QRegularExpressionMatch();
QRegularExpressionMatch(const QRegularExpressionMatch &match);
QRegularExpressionMatch &operator=(const QRegularExpressionMatch &match);
@@ -209,6 +214,7 @@ struct QRegularExpressionMatchIteratorPrivate;
class Q_CORE_EXPORT QRegularExpressionMatchIterator
{
public:
+ QRegularExpressionMatchIterator();
~QRegularExpressionMatchIterator();
QRegularExpressionMatchIterator(const QRegularExpressionMatchIterator &iterator);
QRegularExpressionMatchIterator &operator=(const QRegularExpressionMatchIterator &iterator);
@@ -239,8 +245,6 @@ Q_DECLARE_SHARED(QRegularExpressionMatchIterator)
QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_REGEXP
+#endif // QT_NO_REGULAREXPRESSION
#endif // QREGULAREXPRESSION_H
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/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h
index 5d19bcea55..2155c56e27 100644
--- a/src/corelib/tools/qscopedpointer.h
+++ b/src/corelib/tools/qscopedpointer.h
@@ -46,7 +46,6 @@
#include <stdlib.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
template <typename T>
@@ -97,7 +96,6 @@ public:
{
T *oldD = this->d;
Cleanup::cleanup(oldD);
- this->d = 0;
}
inline T &operator*() const
@@ -239,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 <QtCore/qglobal.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
template <typename T>
@@ -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 6fdc8e6281..d5c3637293 100644
--- a/src/corelib/tools/qset.h
+++ b/src/corelib/tools/qset.h
@@ -43,8 +43,9 @@
#define QSET_H
#include <QtCore/qhash.h>
-
-QT_BEGIN_HEADER
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+#include <initializer_list>
+#endif
QT_BEGIN_NAMESPACE
@@ -56,6 +57,14 @@ class QSet
public:
inline QSet() {}
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ inline QSet(std::initializer_list<T> list)
+ {
+ reserve(list.size());
+ for (typename std::initializer_list<T>::const_iterator it = list.begin(); it != list.end(); ++it)
+ insert(*it);
+ }
+#endif
inline QSet(const QSet<T> &other) : q_hash(other.q_hash) {}
inline QSet<T> &operator=(const QSet<T> &other)
@@ -355,6 +364,4 @@ public:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSET_H
diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc
index ef7a4c4f52..c1351943e1 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<T> 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<T> &other)
@@ -120,7 +130,7 @@
\fn QSet<T> &QSet::operator=(const QSet<T> &other)
Assigns the \a other set to this set and returns a reference to
- this set.
+ this set.
*/
/*!
@@ -296,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
@@ -341,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
@@ -486,7 +496,7 @@
/*!
\fn QSet<T> &QSet::subtract(const QSet<T> &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()
@@ -496,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().
*/
/*!
@@ -519,7 +529,7 @@
/*!
\fn QSet<T> &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.
@@ -549,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.
*/
@@ -565,7 +575,7 @@
\fn QSet<T> QSet::operator|(const QSet<T> &other) const
\fn QSet<T> QSet::operator+(const QSet<T> &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-()
@@ -612,7 +622,7 @@
iterators are slightly faster, and can improve code readability.
QSet\<T\>::iterator allows you to iterate over a QSet\<T\> 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
@@ -691,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/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 <QtCore/qglobal.h>
#include <QtCore/qatomic.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -281,6 +279,4 @@ template<typename T> Q_DECLARE_TYPEINFO_BODY(QExplicitlySharedDataPointer<T>, Q_
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSHAREDDATA_H
diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp
index df7a911f8c..bced1f4ece 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
@@ -605,6 +598,37 @@
*/
/*!
+ \fn QSharedPointer<T> QSharedPointer::create()
+ \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 calls the default constructor for type \tt T.
+*/
+
+/*!
+ \fn QSharedPointer<T> 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<T> QSharedPointer::toWeakRef() const
Returns a weak reference object that shares the pointer referenced
diff --git a/src/corelib/tools/qsharedpointer.h b/src/corelib/tools/qsharedpointer.h
index b4e70cebd2..7d1f00814d 100644
--- a/src/corelib/tools/qsharedpointer.h
+++ b/src/corelib/tools/qsharedpointer.h
@@ -50,8 +50,6 @@
# include <QtCore/qsharedpointer_impl.h>
#else
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -95,6 +93,9 @@ public:
template <class X> QSharedPointer<X> dynamicCast() const;
template <class X> QSharedPointer<X> constCast() const;
template <class X> QSharedPointer<X> objectCast() const;
+
+ static inline QSharedPointer<T> create();
+ static inline QSharedPointer<T> create(...);
};
template <class T>
@@ -149,8 +150,6 @@ template <class X, class T> QWeakPointer<X> 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 881c60b6fd..5e30cf3ecb 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -46,14 +46,17 @@
#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
// 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
@@ -62,7 +65,9 @@ QT_END_HEADER
#include <QtCore/qobject.h> // for qobject_cast
#include <QtCore/qhash.h> // for qHash
-QT_BEGIN_HEADER
+#if defined(Q_COMPILER_RVALUE_REFS) && defined(Q_COMPILER_VARIADIC_TEMPLATES)
+# include <utility> // for std::forward
+#endif
QT_BEGIN_NAMESPACE
@@ -389,6 +394,28 @@ public:
QWeakPointer<T> toWeakRef() const;
+#if defined(Q_COMPILER_RVALUE_REFS) && defined(Q_COMPILER_VARIADIC_TEMPLATES)
+ template <typename... Args>
+ static QSharedPointer<T> create(Args && ...arguments)
+ {
+ typedef QtSharedPointer::ExternalRefCountWithContiguousData<T> Private;
+# ifdef QT_SHAREDPOINTER_TRACK_POINTERS
+ typename Private::DestroyerFn destroy = &Private::safetyCheckDeleter;
+# else
+ typename Private::DestroyerFn destroy = &Private::deleter;
+# endif
+ QSharedPointer<T> result(Qt::Uninitialized);
+ result.d = Private::create(&result.value, destroy);
+
+ // now initialize the data
+ new (result.data()) T(std::forward<Args>(arguments)...);
+ result.d->setQObjectShared(result.value, true);
+# ifdef QT_SHAREDPOINTER_TRACK_POINTERS
+ internalSafetyCheckAdd(result.d, result.value);
+# endif
+ return result;
+ }
+#else
static inline QSharedPointer<T> create()
{
typedef QtSharedPointer::ExternalRefCountWithContiguousData<T> Private;
@@ -408,6 +435,7 @@ public:
result.d->setQObjectShared(result.value, true);
return result;
}
+#endif
private:
explicit QSharedPointer(Qt::Initialization) {}
@@ -616,7 +644,7 @@ private:
public:
#else
template <class X> friend class QSharedPointer;
- friend class QPointerBase;
+ template <class X> friend class QPointer;
#endif
template <class X>
@@ -862,6 +890,4 @@ template<typename T> Q_DECLARE_TYPEINFO_BODY(QSharedPointer<T>, 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 2156c2235f..b9d546452f 100644
--- a/src/corelib/tools/qsimd_p.h
+++ b/src/corelib/tools/qsimd_p.h
@@ -45,8 +45,6 @@
#include <qglobal.h>
#include <qatomic.h>
-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
@@ -252,6 +250,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 <QtCore/qnamespace.h>
-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 <QtCore/qvector.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -77,6 +75,4 @@ inline const T &QStack<T>::top() const
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSTACK_H
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 589a9c710a..a3f6a0b075 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;
}
@@ -2762,13 +2763,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 +2930,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 +3060,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 +3261,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()
@@ -3336,6 +3341,33 @@ bool QString::contains(const QRegularExpression &re) const
}
/*!
+ \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
@@ -3366,7 +3398,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 +3519,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 +3569,9 @@ static QString extractSections(const QList<qt_section_chunk> &sections,
return ret;
}
+#endif
+#ifndef QT_NO_REGEXP
/*!
\overload section()
@@ -3575,7 +3609,7 @@ QString QString::section(const QRegExp &reg, int start, int end, SectionFlags fl
}
#endif
-#ifndef QT_NO_REGEXP
+#ifndef QT_NO_REGULAREXPRESSION
#ifndef QT_BOOTSTRAPPED
/*!
\overload section()
@@ -3621,7 +3655,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
@@ -5459,8 +5493,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;
@@ -6448,7 +6484,7 @@ QStringList QString::split(const QRegExp &rx, SplitBehavior behavior) const
}
#endif
-#ifndef QT_NO_REGEXP
+#ifndef QT_NO_REGULAREXPRESSION
#ifndef QT_BOOTSTRAPPED
/*!
\overload
@@ -6502,7 +6538,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
@@ -9192,6 +9228,356 @@ QVector<uint> 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);
+}
+
+/*!
+ 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
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index a6f03b2ce0..ac49bdcdf6 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -49,7 +49,7 @@
#include <string>
-#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
@@ -64,14 +64,13 @@ namespace std
#error qstring.h must be included before any header file that defines truncate
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QCharRef;
class QRegExp;
class QRegularExpression;
+class QRegularExpressionMatch;
class QString;
class QStringList;
class QTextCodec;
@@ -335,10 +334,11 @@ 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;
+ bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const; // ### Qt 6: merge overloads
int count(const QRegularExpression &re) const;
#endif
@@ -356,7 +356,7 @@ public:
#ifndef QT_NO_REGEXP
QString section(const QRegExp &reg, 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 {
@@ -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(); }
@@ -1171,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; }
@@ -1271,6 +1277,18 @@ 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;
+ 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);
@@ -1386,8 +1404,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 <QtCore/qstringbuilder.h>
#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 <string.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -429,6 +427,4 @@ QString &operator+=(QString &a, const QStringBuilder<A, B> &b)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSTRINGBUILDER_H
diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp
index f38acef664..a5559a181b 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 8ae6e3653a..a962b7c528 100644
--- a/src/corelib/tools/qstringlist.h
+++ b/src/corelib/tools/qstringlist.h
@@ -49,8 +49,6 @@
#include <QtCore/qstring.h>
#include <QtCore/qstringmatcher.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -99,12 +97,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 +139,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 +218,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 +239,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
@@ -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 <QtCore/qstring.h>
-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.cpp b/src/corelib/tools/qtextboundaryfinder.cpp
index 9ccfe95b1d..eb861b7289 100644
--- a/src/corelib/tools/qtextboundaryfinder.cpp
+++ b/src/corelib/tools/qtextboundaryfinder.cpp
@@ -41,7 +41,6 @@
#include <QtCore/qtextboundaryfinder.h>
#include <QtCore/qvarlengtharray.h>
-#include <private/qunicodetables_p.h>
#include <private/qunicodetools_p.h>
QT_BEGIN_NAMESPACE
@@ -54,39 +53,24 @@ public:
static void init(QTextBoundaryFinder::BoundaryType type, const QChar *chars, int length, QCharAttributes *attributes)
{
+ const ushort *string = reinterpret_cast<const ushort *>(chars);
+
QVarLengthArray<QUnicodeTools::ScriptItem> scriptItems;
+ {
+ QVarLengthArray<uchar> scripts(length);
- const ushort *string = reinterpret_cast<const ushort *>(chars);
- const ushort *unicode = string;
- // 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;
- const ushort *start = uc;
- while (uc < e) {
- int s = QUnicodeTables::script(*uc);
- if (s != QUnicodeTables::Inherited)
- script = s;
- if (*uc == QChar::ObjectReplacementCharacter || *uc == QChar::LineSeparator || *uc == 9)
- script = QUnicodeTables::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;
@@ -100,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/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 <QtCore/qchar.h>
#include <QtCore/qstring.h>
-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.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);
}
}
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 <QtCore/qeasingcurve.h>
#include <QtCore/qobject.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -156,7 +154,5 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp
index b9f91cdb74..764a4afa04 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,
-
- 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,
+ 732, 732, 733, 733, 733, 733, 733, 732,
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, 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,
- 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,
-
- 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,
+ 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,
- 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,
-
- 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,
-
- 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,
+ 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, 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 }
};
@@ -6369,11 +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)
-{
- return (Script)qGetProp(ucs4)->script;
-}
-
static const ushort specialCaseMap[] = {
0x0, // placeholder
diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h
index 74b022d8ef..8f0b7aabad 100644
--- a/src/corelib/tools/qunicodetables_p.h
+++ b/src/corelib/tools/qunicodetables_p.h
@@ -83,119 +83,12 @@ 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);
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 060c9adb05..4d5c978fd5 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 <private/harfbuzz-shaper.h>
+#include "qharfbuzz_p.h"
#define FLAG(x) (1 << (x))
@@ -610,12 +610,12 @@ 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;
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);
}
@@ -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/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
index 5e57de5767..3a2028057d 100644
--- a/src/corelib/tools/qvarlengtharray.h
+++ b/src/corelib/tools/qvarlengtharray.h
@@ -50,8 +50,6 @@
#include <string.h>
#include <stdlib.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -103,6 +101,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);
@@ -244,6 +243,10 @@ Q_OUTOFLINE_TEMPLATE void QVarLengthArray<T, Prealloc>::append(const T *abuf, in
}
template <class T, int Prealloc>
+Q_INLINE_TEMPLATE void QVarLengthArray<T, Prealloc>::squeeze()
+{ realloc(s, s); }
+
+template <class T, int Prealloc>
Q_OUTOFLINE_TEMPLATE void QVarLengthArray<T, Prealloc>::realloc(int asize, int aalloc)
{
Q_ASSERT(aalloc >= asize);
@@ -415,6 +418,4 @@ bool operator!=(const QVarLengthArray<T, Prealloc1> &l, const QVarLengthArray<T,
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QVARLENGTHARRAY_H
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)
diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp
index 448c8e4c6a..a443a6b4e8 100644
--- a/src/corelib/tools/qvector.cpp
+++ b/src/corelib/tools/qvector.cpp
@@ -436,7 +436,7 @@
Same as at(\a i).
*/
-/*!
+/*!
\fn void QVector::append(const T &value)
Inserts \a value at the end of the vector.
@@ -545,6 +545,48 @@
\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(), takeFirst(), 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(), 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
@@ -774,13 +816,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 94f3008274..a06fb7b4eb 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -56,8 +56,6 @@
#include <initializer_list>
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QRegion;
@@ -140,6 +138,10 @@ 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();
+ 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<T> &fill(const T &t, int size = -1);
@@ -200,8 +202,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(); }
@@ -556,6 +558,22 @@ void QVector<T>::append(const T &t)
}
template <typename T>
+inline void QVector<T>::removeLast()
+{
+ Q_ASSERT(!isEmpty());
+
+ if (d->alloc) {
+ if (d->ref.isShared()) {
+ reallocData(d->size - 1, int(d->alloc));
+ return;
+ }
+ if (QTypeInfo<T>::isComplex)
+ (d->data() + d->size - 1)->~T();
+ --d->size;
+ }
+}
+
+template <typename T>
typename QVector<T>::iterator QVector<T>::insert(iterator before, size_type n, const T &t)
{
int offset = std::distance(d->begin(), before);
@@ -604,6 +622,7 @@ typename QVector<T>::iterator QVector<T>::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;
@@ -813,6 +832,4 @@ Q_TEMPLATE_EXTERN template class Q_CORE_EXPORT QVector<QPoint>;
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QVECTOR_H
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index 564aff9ab9..bb152987e6 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 \
@@ -104,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
@@ -132,7 +138,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 \
@@ -146,7 +152,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
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 <QtCore/qvector.h>
#include <QtCore/qscopedpointer.h>
-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/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/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/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.cpp b/src/dbus/qdbusabstractinterface.cpp
index 2a8681d1d7..53def1beb6 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
@@ -609,9 +609,22 @@ void QDBusAbstractInterface::disconnectNotify(const QMetaMethod &signal)
return;
QDBusConnectionPrivate *conn = d->connectionPrivate();
- if (conn)
- 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/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 c0bce586ac..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
@@ -397,10 +395,25 @@ inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantHash &map)
return arg;
}
+template <typename T1, typename T2>
+inline QDBusArgument &operator<<(QDBusArgument &arg, const QPair<T1, T2> &pair)
+{
+ arg.beginStructure();
+ arg << pair.first << pair.second;
+ arg.endStructure();
+ return arg;
+}
-QT_END_NAMESPACE
+template <typename T1, typename T2>
+inline const QDBusArgument &operator>>(const QDBusArgument &arg, QPair<T1, T2> &pair)
+{
+ arg.beginStructure();
+ arg >> pair.first >> pair.second;
+ arg.endStructure();
+ return arg;
+}
-QT_END_HEADER
+QT_END_NAMESPACE
#endif // QT_NO_DBUS
#endif
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
index d576112f8d..74a3a752a5 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;
@@ -825,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;
}
@@ -840,12 +835,13 @@ 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 {
// add entry
+ ++node->activeChildren;
node = node->children.insert(it, pathComponents.at(i));
}
@@ -883,35 +879,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.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/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 2c3ddefc50..73c8dcf411 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -140,14 +140,16 @@ public:
{
typedef QVector<ObjectTreeNode> 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;
};
@@ -208,6 +211,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);
@@ -340,8 +344,8 @@ public:
// in qdbusmisc.cpp
extern int qDBusParametersForMethod(const QMetaMethod &mm, QVector<int> &metaTypes);
#endif // QT_BOOTSTRAPPED
-extern int qDBusParametersForMethod(const QList<QByteArray> &parameters, QVector<int>& metaTypes);
-extern bool qDBusCheckAsyncTag(const char *tag);
+extern Q_DBUS_EXPORT int qDBusParametersForMethod(const QList<QByteArray> &parameters, QVector<int>& 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/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.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/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/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 1cf9de5610..afb8506b28 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<QDBusConnectionPrivate *>(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<QDBusConnectionPrivate *>(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<QDBusConnectionPrivate *>(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);
@@ -587,17 +587,76 @@ 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();
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;
}
+
+ garbageCollectChildren(haystack);
+}
+
+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->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
+ }
+ } 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) || !it->isActive())
+ return; // node not found
+
+ huntAndUnregister(pathComponents, i + 1, mode, it);
+ if (!it->isActive())
+ --node->activeChildren;
+
+ garbageCollectChildren(*node);
+ }
}
static void huntAndEmit(DBusConnection *connection, DBusMessage *msg,
@@ -606,8 +665,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?
@@ -1787,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;
@@ -2249,6 +2311,21 @@ void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node)
}
}
+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,
@@ -2316,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)
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/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/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/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 <QtCore/qvector.h>
#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 72caf312ec..8f8954c1ce 100644
--- a/src/dbus/qdbusmessage.h
+++ b/src/dbus/qdbusmessage.h
@@ -53,8 +53,6 @@
# undef interface
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -130,8 +128,6 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QDBusMessage)
-QT_END_HEADER
-
#endif // QT_NO_DBUS
#endif
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<int, 4> outputTypes;
int flags;
};
-
+
struct Property {
QByteArray typeName;
QByteArray signature;
@@ -92,14 +92,14 @@ private:
QMap<QByteArray, Method> signals_;
QMap<QByteArray, Method> methods;
QMap<QByteArray, Property> 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<uint*>(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/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.cpp b/src/dbus/qdbuspendingreply.cpp
index cf99bb692c..c0e24bee06 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 89cd846bf8..b7e459f7a7 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
@@ -107,6 +105,10 @@ namespace QDBusPendingReplyTypes {
static inline void fillMetaTypes(int *)
{ }
};
+
+ struct TypeIsVoid {};
+ template <typename T> struct NotVoid { typedef T Type; };
+ template <> struct NotVoid<void> { typedef TypeIsVoid Type; };
} // namespace QDBusPendingReplyTypes
template<typename T1 = void, typename T2 = void, typename T3 = void, typename T4 = void,
@@ -168,9 +170,7 @@ public:
template<int Index> inline
const typename Select<Index>::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<Index>::Type ResultType;
return qdbus_cast<ResultType>(argumentAt(Index), 0);
}
@@ -180,7 +180,7 @@ public:
return argumentAt<0>();
}
- inline operator typename Select<0>::Type() const
+ inline operator typename QDBusPendingReplyTypes::NotVoid<T1>::Type() const
{
return argumentAt<0>();
}
@@ -210,7 +210,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..4567c80131 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
@@ -71,7 +69,7 @@ public:
}
inline QDBusReply& operator=(const QDBusMessage &reply)
{
- QVariant data(qMetaTypeId(&m_data), reinterpret_cast<void*>(0));
+ QVariant data(qMetaTypeId<Type>(), reinterpret_cast<void*>(0));
qDBusReplyFill(reply, m_error, data);
m_data = qvariant_cast<Type>(data);
return *this;
@@ -113,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
{
@@ -184,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;
@@ -192,7 +192,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 <utility>
#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.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
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/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/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index 9b8e44f003..4a998dc4b8 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -51,6 +51,7 @@
#include <QtCore/qdebug.h>
#include <QtCore/qmetaobject.h>
+#include <QtCore/qhash.h>
#include <private/qfactoryloader_p.h>
QT_BEGIN_NAMESPACE
@@ -430,6 +431,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
#endif
Q_GLOBAL_STATIC(QList<QAccessible::InterfaceFactory>, qAccessibleFactories)
+typedef QHash<QString, QAccessiblePlugin*> 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<QAccessibleInterface, QAccessiblePlugin>(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<QAccessiblePlugin *>(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();
@@ -1330,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;
}
diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h
index 5988e6c346..09e259c1d0 100644
--- a/src/gui/accessible/qaccessible.h
+++ b/src/gui/accessible/qaccessible.h
@@ -39,6 +39,8 @@
**
****************************************************************************/
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_ACCESSIBILITY
#ifndef QACCESSIBLE_H
#define QACCESSIBLE_H
@@ -54,8 +56,6 @@
#include <stdlib.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -679,7 +679,5 @@ inline void QAccessible::updateAccessibility(QObject *object, int child, Event r
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QACCESSIBLE_H
#endif //!QT_NO_ACCESSIBILITY
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 <QtGui/QGuiApplication>
#include "qclipboard.h"
#include "qtextboundaryfinder.h"
diff --git a/src/gui/accessible/qaccessible2.h b/src/gui/accessible/qaccessible2_p.h
index 2f95094584..169ca2b5e5 100644
--- a/src/gui/accessible/qaccessible2.h
+++ b/src/gui/accessible/qaccessible2_p.h
@@ -45,8 +45,6 @@
#include <QtGui/qaccessible.h>
#include <QtCore/qcoreapplication.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -186,9 +184,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;
@@ -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 <QtCore/qplugin.h>
#include <QtCore/qfactoryinterface.h>
-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.cpp b/src/gui/accessible/qaccessibleobject.cpp
index af8787ae80..c1ef71e1fa 100644
--- a/src/gui/accessible/qaccessibleobject.cpp
+++ b/src/gui/accessible/qaccessibleobject.cpp
@@ -55,39 +55,8 @@ class QAccessibleObjectPrivate
{
public:
QPointer<QObject> object;
-
- QList<QByteArray> actionList() const;
};
-QList<QByteArray> QAccessibleObjectPrivate::actionList() const
-{
- QList<QByteArray> 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
@@ -224,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/gui/accessible/qaccessibleobject.h b/src/gui/accessible/qaccessibleobject.h
index abe55f38c6..4861af3557 100644
--- a/src/gui/accessible/qaccessibleobject.h
+++ b/src/gui/accessible/qaccessibleobject.h
@@ -43,9 +43,6 @@
#define QACCESSIBLEOBJECT_H
#include <QtGui/qaccessible.h>
-#include <QtGui/qaccessible2.h>
-
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -101,6 +98,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 <QtGui/qaccessible.h>
#include <QtCore/qfactoryinterface.h>
-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 <QtGui/qaccessible.h>
-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/doc/snippets/code/src_gui_util_qvalidator.cpp b/src/gui/doc/snippets/code/src_gui_util_qvalidator.cpp
index fbf58a8c09..f9a4ee4ad1 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/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/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/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/gui.pro b/src/gui/gui.pro
index 33fa1c6e07..14c267df70 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/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 <QtGui/qpixmap.h>
-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.cpp b/src/gui/image/qicon.cpp
index a297c32b3c..1b36fa257a 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
@@ -987,7 +988,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/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 <QtCore/qlist.h>
#include <QtGui/qpixmap.h>
-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 <QtCore/qlist.h>
#include <QtGui/qicon.h>
-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 <QtCore/qplugin.h>
#include <QtCore/qfactoryinterface.h>
-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/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 <QtCore/qglobal.h>
+
#ifndef QT_NO_ICON
//
// W A R N I N G
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 <QtCore/qstringlist.h>
#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.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/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 <QtCore/qfactoryinterface.h>
#include <QtCore/qscopedpointer.h>
-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.cpp b/src/gui/image/qimagereader.cpp
index 684778694e..e612a2c374 100644
--- a/src/gui/image/qimagereader.cpp
+++ b/src/gui/image/qimagereader.cpp
@@ -190,34 +190,35 @@ 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"},
{_qt_JpegFormat, "jpeg"},
#endif
#ifdef QT_BUILTIN_GIF_READER
- {_qt_GifFormat, "gif"},
+ {_qt_GifFormat, "gif", "image/gif"},
#endif
#ifndef QT_NO_IMAGEFORMAT_BMP
- {_qt_BmpFormat, "bmp"},
+ {_qt_BmpFormat, "bmp", "image/bmp"},
#endif
#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,
@@ -1445,6 +1446,10 @@ QByteArray QImageReader::imageFormat(QIODevice *device)
void supportedImageHandlerFormats(QFactoryLoader *loader,
QImageIOPlugin::Capability cap,
QSet<QByteArray> *result);
+
+void supportedImageHandlerMimeTypes(QFactoryLoader *loader,
+ QImageIOPlugin::Capability cap,
+ QSet<QByteArray> *result);
#endif
/*!
@@ -1453,18 +1458,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 the \l{Qt SVG} module.
@@ -1494,4 +1498,31 @@ QList<QByteArray> 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<QByteArray> QImageReader::supportedMimeTypes()
+{
+ QSet<QByteArray> 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<QByteArray> sortedMimeTypes;
+ for (QSet<QByteArray>::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 11c925b142..4f3c93af7d 100644
--- a/src/gui/image/qimagereader.h
+++ b/src/gui/image/qimagereader.h
@@ -46,8 +46,6 @@
#include <QtGui/qimage.h>
#include <QtGui/qimageiohandler.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -133,6 +131,7 @@ public:
static QByteArray imageFormat(const QString &fileName);
static QByteArray imageFormat(QIODevice *device);
static QList<QByteArray> supportedImageFormats();
+ static QList<QByteArray> supportedMimeTypes();
private:
Q_DISABLE_COPY(QImageReader)
@@ -141,6 +140,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QIMAGEREADER_H
diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp
index 20e601be03..8823f9293d 100644
--- a/src/gui/image/qimagewriter.cpp
+++ b/src/gui/image/qimagewriter.cpp
@@ -100,6 +100,7 @@
#include <qfile.h>
#include <qfileinfo.h>
#include <qimageiohandler.h>
+#include <qjsonarray.h>
#include <qset.h>
#include <qvariant.h>
@@ -677,6 +678,26 @@ void supportedImageHandlerFormats(QFactoryLoader *loader,
result->insert(key);
}
}
+
+void supportedImageHandlerMimeTypes(QFactoryLoader *loader,
+ QImageIOPlugin::Capability cap,
+ QSet<QByteArray> *result)
+{
+ QList<QJsonObject> 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<QImageIOPlugin *>(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 the \l{Qt SVG} module.
@@ -726,9 +746,6 @@ QList<QByteArray> 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);
@@ -742,4 +759,46 @@ QList<QByteArray> 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<QByteArray> QImageWriter::supportedMimeTypes()
+{
+ QSet<QByteArray> 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<QByteArray> sortedMimeTypes;
+ for (QSet<QByteArray>::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 7d05cd5236..3f5cf9c454 100644
--- a/src/gui/image/qimagewriter.h
+++ b/src/gui/image/qimagewriter.h
@@ -46,8 +46,6 @@
#include <QtCore/qlist.h>
#include <QtGui/qimageiohandler.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -102,6 +100,7 @@ public:
bool supportsOption(QImageIOHandler::ImageOption option) const;
static QList<QByteArray> supportedImageFormats();
+ static QList<QByteArray> supportedMimeTypes();
private:
Q_DISABLE_COPY(QImageWriter)
@@ -110,6 +109,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QIMAGEWRITER_H
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/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 <QtCore/qlist.h>
#include <QtGui/qimagereader.h>
-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 <QtCore/qsharedpointer.h>
#include <QtGui/qpaintdevice.h>
-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 <QtCore/qplugin.h>
#include <QtCore/qfactoryinterface.h>
-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.cpp b/src/gui/image/qpixmap.cpp
index b6a21f588e..85f0dc2d92 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);
}
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 <QtGui/qimage.h>
#include <QtGui/qtransform.h>
-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/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp
index f8fef9cada..8d5891aae2 100644
--- a/src/gui/image/qpixmap_raster.cpp
+++ b/src/gui/image/qpixmap_raster.cpp
@@ -354,7 +354,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/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 <QtCore/qpair.h>
#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.cpp b/src/gui/image/qplatformpixmap.cpp
index ce66972dc3..54f0087bc2 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 ded4bd30a9..08e03f10bd 100644
--- a/src/gui/image/qplatformpixmap.h
+++ b/src/gui/image/qplatformpixmap.h
@@ -54,8 +54,6 @@
#include <QtGui/qpixmap.h>
#include <QtCore/qatomic.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -132,6 +130,7 @@ public:
protected:
void setSerialNumber(int serNo);
+ void setDetachNumber(int detNo);
int w;
int h;
int d;
@@ -158,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/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/itemmodels/qstandarditemmodel.h b/src/gui/itemmodels/qstandarditemmodel.h
index 0d6649039c..f1820e1c80 100644
--- a/src/gui/itemmodels/qstandarditemmodel.h
+++ b/src/gui/itemmodels/qstandarditemmodel.h
@@ -50,8 +50,6 @@
#include <QtCore/qdatastream.h>
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -454,6 +452,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/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/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/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 <QtCore/qobject.h>
-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..0bf4cc7bf9 100644
--- a/src/gui/kernel/qcursor.h
+++ b/src/gui/kernel/qcursor.h
@@ -45,8 +45,6 @@
#include <QtCore/qpoint.h>
#include <QtGui/qwindowdefs.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -109,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;
};
@@ -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 <QtCore/qobject.h>
-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 <QtGui/qvector2d.h>
#include <QtGui/qtouchdevice.h>
-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 <QtCore/qplugin.h>
#include <QtCore/qfactoryinterface.h>
-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 <QtCore/qstringlist.h>
-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.cpp b/src/gui/kernel/qguiapplication.cpp
index d42da6ee79..a1c9af45b8 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;
@@ -664,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);
@@ -1065,6 +1067,8 @@ QGuiApplicationPrivate::~QGuiApplicationPrivate()
delete platform_integration;
platform_integration = 0;
delete m_gammaTables.load();
+
+ window_list.clear();
}
#if 0
@@ -1274,6 +1278,12 @@ void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePriv
case QWindowSystemInterfacePrivate::WindowStateChanged:
QGuiApplicationPrivate::processWindowStateChangedEvent(static_cast<QWindowSystemInterfacePrivate::WindowStateChangedEvent *>(e));
break;
+ case QWindowSystemInterfacePrivate::ApplicationStateChanged:
+ QGuiApplicationPrivate::processApplicationStateChangedEvent(static_cast<QWindowSystemInterfacePrivate::ApplicationStateChangedEvent *>(e));
+ break;
+ case QWindowSystemInterfacePrivate::FlushEvents:
+ QWindowSystemInterface::deferredFlushWindowSystemEvents();
+ break;
case QWindowSystemInterfacePrivate::Close:
QGuiApplicationPrivate::processCloseEvent(
static_cast<QWindowSystemInterfacePrivate::CloseEvent *>(e));
@@ -1499,10 +1509,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;
@@ -1512,7 +1532,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)
@@ -1565,21 +1597,21 @@ 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*)));
- } else {
+ } else if (!platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) {
QEvent appActivate(QEvent::ApplicationActivate);
qApp->sendSpontaneousEvent(qApp, &appActivate);
}
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*)));
- } else {
+ } else if (!platformIntegration()->hasCapability(QPlatformIntegration::ApplicationState)) {
QEvent appActivate(QEvent::ApplicationDeactivate);
qApp->sendSpontaneousEvent(qApp, &appActivate);
}
@@ -1603,6 +1635,26 @@ 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; }
+ default:
+ break;
+ }
+}
+
void QGuiApplicationPrivate::processThemeChanged(QWindowSystemInterfacePrivate::ThemeChangeEvent *tce)
{
if (self)
@@ -1669,10 +1721,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);
}
@@ -2626,6 +2678,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<QWindow *> &l, const QCursor &c)
{
for (int i = 0; i < l.size(); ++i) {
@@ -2639,8 +2698,13 @@ static inline void applyWindowCursor(const QList<QWindow *> &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);
+ }
+ }
}
}
@@ -2772,111 +2836,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/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 <QtCore/qpoint.h>
#include <QtCore/qsize.h>
-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..13b5952e73 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 <qicon.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QPlatformIntegration;
@@ -129,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);
@@ -201,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;
@@ -293,6 +294,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.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 35e29e9cb5..fe6cc3f331 100644
--- a/src/gui/kernel/qinputmethod.h
+++ b/src/gui/kernel/qinputmethod.h
@@ -44,8 +44,6 @@
#include <QtCore/qobject.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QInputMethodPrivate;
@@ -69,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?
@@ -116,6 +117,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..79b1299722 100644
--- a/src/gui/kernel/qinputmethod_p.h
+++ b/src/gui/kernel/qinputmethod_p.h
@@ -61,8 +61,6 @@
#include <qpa/qplatformintegration.h>
#include <private/qguiapplication_p.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QInputMethodPrivate : public QObjectPrivate
@@ -86,11 +84,10 @@ public:
bool objectAcceptsInputMethod(QObject *object);
QTransform inputItemTransform;
+ QRectF inputRectangle;
QPlatformInputContext *testContext;
};
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 07ec658818..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.
@@ -878,7 +881,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 +895,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 +906,7 @@ QKeySequence::QKeySequence(StandardKey key)
const QList <QKeySequence> 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 +994,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 +1512,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.
*/
@@ -1681,6 +1684,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> QKeySequence::listFromString(const QString &str, SequenceFormat format)
+{
+ QList<QKeySequence> 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<QKeySequence> &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 dd26efda8e..05460c6651 100644
--- a/src/gui/kernel/qkeysequence.h
+++ b/src/gui/kernel/qkeysequence.h
@@ -45,8 +45,6 @@
#include <QtCore/qnamespace.h>
#include <QtCore/qstring.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -138,7 +136,8 @@ public:
SaveAs,
Preferences,
Quit,
- FullScreen
+ FullScreen,
+ Deselect
};
enum SequenceFormat {
@@ -165,6 +164,9 @@ public:
QString toString(SequenceFormat format = PortableText) const;
static QKeySequence fromString(const QString &str, SequenceFormat format = PortableText);
+ static QList<QKeySequence> listFromString(const QString &str, SequenceFormat format = PortableText);
+ static QString listToString(const QList<QKeySequence> &list, SequenceFormat format = PortableText);
+
SequenceMatch matches(const QKeySequence &seq) const;
static QKeySequence mnemonic(const QString &text);
static QList<QKeySequence> keyBindings(StandardKey key);
@@ -231,6 +233,4 @@ public:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QKEYSEQUENCE_H
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<QObject *>(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 <QtCore/QObject>
+#include <QtGui/qsurface.h>
+
+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/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 <QtGui/QScreen>
#include <private/qopenglextensions_p.h>
+#include <private/qopenglversionfunctionsfactory_p.h>
#include <QDebug>
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<int,int> where the components represent the major and minor OpenGL
+ version numbers respectively.
+
+ \sa setVersion()
+*/
+QPair<int, int> 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();
}
/*!
@@ -425,6 +581,97 @@ QOpenGLFunctions *QOpenGLContext::functions() const
}
/*!
+ \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<QOpenGLFunctions_3_3_Core>();
+ 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<int, int> 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.
The context or a sharing context must be current.
@@ -702,6 +949,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
\brief The QOpenGLContextGroup class represents a group of contexts sharing
diff --git a/src/gui/kernel/qopenglcontext.h b/src/gui/kernel/qopenglcontext.h
index d6d812a98d..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 <QtCore/qglobal.h>
+
#ifndef QT_NO_OPENGL
#include <QtCore/qnamespace.h>
@@ -58,8 +60,10 @@
#endif
#include <QtGui/qopengl.h>
+#include <QtGui/qopenglversionfunctions.h>
-QT_BEGIN_HEADER
+#include <QtCore/qhash.h>
+#include <QtCore/qpair.h>
QT_BEGIN_NAMESPACE
@@ -71,6 +75,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<int, int> 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<int>(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
@@ -129,6 +177,15 @@ public:
QOpenGLFunctions *functions() const;
+ QAbstractOpenGLFunctions *versionFunctions(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile()) const;
+
+ template<class TYPE>
+ TYPE *versionFunctions() const
+ {
+ QOpenGLVersionProfile v = TYPE::versionProfile();
+ return static_cast<TYPE*>(versionFunctions(v));
+ }
+
QSet<QByteArray> extensions() const;
bool hasExtension(const QByteArray &extension) const;
@@ -149,18 +206,22 @@ 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();
};
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..8a36df3e7c 100644
--- a/src/gui/kernel/qopenglcontext_p.h
+++ b/src/gui/kernel/qopenglcontext_p.h
@@ -64,8 +64,6 @@
#include <QtCore/QHash>
#include <QtCore/QSet>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -215,6 +213,9 @@ public:
//QWidgetPrivate::deleteTLSysExtra()
}
+ mutable QHash<QOpenGLVersionProfile, QAbstractOpenGLFunctions *> versionFunctions;
+ mutable QHash<QOpenGLVersionStatus, QOpenGLVersionFunctionsBackend *> versionFunctionsBackend;
+
void *qGLContextHandle;
void (*qGLContextDeleteFunction)(void *handle);
@@ -259,7 +260,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 <QtGui/qcolor.h>
#include <QtGui/qbrush.h>
-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 <QtGui/QClipboard>
-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.cpp b/src/gui/kernel/qplatformcursor.cpp
index 16a59f5d07..c2f510b496 100644
--- a/src/gui/kernel/qplatformcursor.cpp
+++ b/src/gui/kernel/qplatformcursor.cpp
@@ -95,6 +95,10 @@ QList<QPlatformCursor *> 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/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 <qpa/qplatformscreen.h>
#include <QtGui/QCursor>
-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 <QtCore/QDir>
#include <QtGui/QRgb>
-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 <QtCore/qglobal.h>
#include <QtGui/QPixmap>
-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 <QtGui/qinputmethod.h>
-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 <private/qobject_p.h>
-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 <QtCore/qstringlist.h>
-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 <QtCore/qplugin.h>
#include <QtCore/qfactoryinterface.h>
-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.cpp b/src/gui/kernel/qplatformintegration.cpp
index 980e45742e..70de75072c 100644
--- a/src/gui/kernel/qplatformintegration.cpp
+++ b/src/gui/kernel/qplatformintegration.cpp
@@ -199,6 +199,17 @@ 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.
+
+ \value ForeignWindows The platform allows creating QWindows which represent
+ native windows created by other processes or anyway created by using native
+ libraries.
*/
@@ -360,4 +371,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 ee796bf323..ddee6f05c8 100644
--- a/src/gui/kernel/qplatformintegration.h
+++ b/src/gui/kernel/qplatformintegration.h
@@ -55,8 +55,6 @@
#include <qpa/qplatformscreen.h>
#include <QtGui/qsurfaceformat.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -77,6 +75,8 @@ class QPlatformDialogHelper;
class QPlatformSharedGraphicsCache;
class QPlatformServices;
class QKeyEvent;
+class QPlatformOffscreenSurface;
+class QOffscreenSurface;
class Q_GUI_EXPORT QPlatformIntegration
{
@@ -88,7 +88,9 @@ public:
SharedGraphicsCache,
BufferQueueingOpenGL,
WindowMasks,
- MultipleWindows
+ MultipleWindows,
+ ApplicationState,
+ ForeignWindows
};
virtual ~QPlatformIntegration() { }
@@ -148,12 +150,12 @@ public:
virtual QStringList themeNames() const;
virtual QPlatformTheme *createPlatformTheme(const QString &name) const;
+ virtual QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const;
+
protected:
void screenAdded(QPlatformScreen *screen);
};
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 <QtCore/qstringlist.h>
-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 <QtCore/qplugin.h>
#include <QtCore/qfactoryinterface.h>
-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 b02998940b..3485cc58dd 100644
--- a/src/gui/kernel/qplatformmenu.h
+++ b/src/gui/kernel/qplatformmenu.h
@@ -57,8 +57,6 @@
#include <QtGui/QKeySequence>
#include <QtGui/QIcon>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QPlatformMenu;
@@ -80,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;
@@ -101,8 +100,19 @@ 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); }
+ 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;
@@ -125,7 +135,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 <QtCore/QObject>
#include <QtCore/QVariant>
-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/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<QOffscreenSurface*>(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 <QtCore/qscopedpointer.h>
+
+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<QPlatformOffscreenSurfacePrivate> d_ptr;
+private:
+ Q_DISABLE_COPY(QPlatformOffscreenSurface)
+};
+
+QT_END_NAMESPACE
+
+#endif // QPLATFORMOFFSCREENSURFACE_H
diff --git a/src/gui/kernel/qplatformopenglcontext.h b/src/gui/kernel/qplatformopenglcontext.h
index 6a0c819752..42e4db2f9d 100644
--- a/src/gui/kernel/qplatformopenglcontext.h
+++ b/src/gui/kernel/qplatformopenglcontext.h
@@ -51,15 +51,14 @@
// source and binary incompatible with future versions of Qt.
//
+#include <QtCore/qnamespace.h>
+
#ifndef QT_NO_OPENGL
-#include <QtCore/qnamespace.h>
#include <QtGui/qsurfaceformat.h>
#include <QtGui/qwindow.h>
#include <QtGui/qopengl.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -102,8 +101,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 <QtGui/qwindowdefs.h>
#include <qpa/qplatformpixmap.h>
-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 <QtCore/QObject>
-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 <QtCore/QtGlobal>
-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 <QtCore/qobject.h>
#include <QtGui/qimage.h>
-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..b96e494f74 100644
--- a/src/gui/kernel/qplatformsurface.h
+++ b/src/gui/kernel/qplatformsurface.h
@@ -55,8 +55,6 @@
#include <QtGui/qsurface.h>
#include <QtGui/qsurfaceformat.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -74,10 +72,9 @@ private:
QSurface *m_surface;
friend class QPlatformWindow;
+ friend class QPlatformOffscreenSurface;
};
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif //QPLATFORMSURFACE_H
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 <QtCore/qfileinfo.h>
#include <qpalette.h>
#include <qtextformat.h>
+#include <qiconloader_p.h>
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 3ac2b904d2..0e95321102 100644
--- a/src/gui/kernel/qplatformtheme.h
+++ b/src/gui/kernel/qplatformtheme.h
@@ -53,10 +53,9 @@
#include <QtCore/QtGlobal>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
+class QIconEngine;
class QMenu;
class QMenuBar;
class QPlatformMenuItem;
@@ -272,11 +271,11 @@ 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);
};
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 <QtCore/qstringlist.h>
-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 <QtCore/qplugin.h>
#include <QtCore/qfactoryinterface.h>
-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.cpp b/src/gui/kernel/qplatformwindow.cpp
index 79e4cbf674..bfb6ab5a68 100644
--- a/src/gui/kernel/qplatformwindow.cpp
+++ b/src/gui/kernel/qplatformwindow.cpp
@@ -199,7 +199,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;
}
/*!
@@ -211,7 +217,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/gui/kernel/qplatformwindow.h b/src/gui/kernel/qplatformwindow.h
index 410e7ea9bb..7ade461890 100644
--- a/src/gui/kernel/qplatformwindow.h
+++ b/src/gui/kernel/qplatformwindow.h
@@ -59,8 +59,6 @@
#include <qpa/qplatformopenglcontext.h>
#include <qpa/qplatformsurface.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -143,5 +141,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 <QtCore/qrect.h>
-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 <QtCore/qnamespace.h>
-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 <QtCore/private/qobject_p.h>
-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/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)
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 <QtCore/qobject.h>
-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.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 36d85342c5..8dbc230c10 100644
--- a/src/gui/kernel/qsurface.h
+++ b/src/gui/kernel/qsurface.h
@@ -47,8 +47,6 @@
#include <QtCore/qsize.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -60,7 +58,8 @@ class Q_GUI_EXPORT QSurface
{
public:
enum SurfaceClass {
- Window
+ Window,
+ Offscreen
};
enum SurfaceType {
@@ -89,6 +88,4 @@ protected:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif //QSURFACE_H
diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp
index 2c26a172a4..25b603bb9c 100644
--- a/src/gui/kernel/qsurfaceformat.cpp
+++ b/src/gui/kernel/qsurfaceformat.cpp
@@ -583,6 +583,30 @@ int QSurfaceFormat::minorVersion() const
}
/*!
+ Returns a QPair<int, int> representing the OpenGL version.
+
+ Useful for version checks, for example format.version() >= qMakePair(3, 2)
+*/
+QPair<int, int> 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 8ab89225de..7c3c846df3 100644
--- a/src/gui/kernel/qsurfaceformat.h
+++ b/src/gui/kernel/qsurfaceformat.h
@@ -42,8 +42,7 @@
#define QSURFACEFORMAT_H
#include <QtCore/qglobal.h>
-
-QT_BEGIN_HEADER
+#include <QtCore/qpair.h>
QT_BEGIN_NAMESPACE
@@ -122,6 +121,9 @@ public:
void setMinorVersion(int minorVersion);
int minorVersion() const;
+ QPair<int, int> version() const;
+ void setVersion(int major, int minor);
+
bool stereo() const;
void setStereo(bool enable);
@@ -156,6 +158,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 <QtCore/qobject.h>
-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 <QtCore/qobject.h>
#include <QtGui/qtouchdevice.h>
-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.cpp b/src/gui/kernel/qwindow.cpp
index 65530f676a..f09edfe88e 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,
@@ -228,6 +231,120 @@ QWindow::~QWindow()
}
/*!
+ \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.
Specifies whether the window is meant for raster rendering with
@@ -276,6 +393,7 @@ void QWindow::setVisible(bool visible)
return;
d->visible = visible;
emit visibleChanged(visible);
+ d->updateVisibility();
if (!d->platformWindow)
create();
@@ -296,7 +414,7 @@ void QWindow::setVisible(bool visible)
}
#ifndef QT_NO_CURSOR
- if (visible)
+ if (visible && d->hasCursor)
d->applyCursor();
#endif
d->platformWindow->setVisible(visible);
@@ -356,6 +474,10 @@ void QWindow::create()
WId QWindow::winId() const
{
Q_D(const QWindow);
+
+ if (type() == Qt::ForeignWindow)
+ return WId(property("_q_foreignWinId").value<WId>());
+
if(!d->platformWindow)
const_cast<QWindow *>(this)->create();
@@ -381,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);
@@ -654,7 +779,9 @@ 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.
+ \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.
@@ -662,15 +789,58 @@ 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;
+}
+
+/*!
+ 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 &region)
+{
+ 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;
}
/*!
@@ -735,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
@@ -809,6 +980,7 @@ void QWindow::setWindowState(Qt::WindowState state)
d->platformWindow->setWindowState(state);
d->windowState = state;
emit windowStateChanged(d->windowState);
+ d->updateVisibility();
}
/*!
@@ -990,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)
{
@@ -999,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)
{
@@ -1031,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)
{
@@ -1040,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)
{
@@ -1731,6 +1907,7 @@ bool QWindow::event(QEvent *ev)
case QEvent::WindowStateChange: {
Q_D(QWindow);
emit windowStateChanged(d->windowState);
+ d->updateVisibility();
break;
}
@@ -1945,6 +2122,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
@@ -1966,13 +2171,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);
}
/*!
@@ -1980,7 +2179,8 @@ void QWindow::setCursor(const QCursor &cursor)
*/
void QWindow::unsetCursor()
{
- setCursor(Qt::ArrowCursor);
+ Q_D(QWindow);
+ d->setCursor(0);
}
/*!
@@ -1994,14 +2194,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.h b/src/gui/kernel/qwindow.h
index 2e2f12a8ab..1b63e185f8 100644
--- a/src/gui/kernel/qwindow.h
+++ b/src/gui/kernel/qwindow.h
@@ -59,8 +59,6 @@
#include <QtGui/qcursor.h>
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -93,12 +91,18 @@ 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.
// 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,24 @@ 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(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged)
+ 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 {
+ Hidden = 0,
+ AutomaticVisibility,
+ Windowed,
+ Minimized,
+ Maximized,
+ FullScreen
+ };
explicit QWindow(QScreen *screen = 0);
explicit QWindow(QWindow *parent);
@@ -124,6 +138,9 @@ public:
bool isVisible() const;
+ Visibility visibility() const;
+ void setVisibility(Visibility v);
+
void create();
WId winId() const;
@@ -148,6 +165,11 @@ public:
QString title() const;
void setOpacity(qreal level);
+ qreal opacity() const;
+
+ void setMask(const QRegion &region);
+ QRegion mask() const;
+
void requestActivate();
bool isActive() const;
@@ -239,6 +261,8 @@ public:
void unsetCursor();
#endif
+ static QWindow *fromWinId(WId id);
+
public Q_SLOTS:
void setVisible(bool visible);
@@ -261,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);
@@ -277,16 +301,19 @@ 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 contentOrientationChanged(Qt::ScreenOrientation orientation);
+ Q_REVISION(1) void visibilityChanged(QWindow::Visibility visibility);
+ Q_REVISION(1) void contentOrientationChanged(Qt::ScreenOrientation orientation);
void focusObjectChanged(QObject *object);
+ Q_REVISION(1) void opacityChanged(qreal opacity);
+
private Q_SLOTS:
void screenDestroyed(QObject *screen);
@@ -330,6 +357,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 26bf0700f2..e32d45acca 100644
--- a/src/gui/kernel/qwindow_p.h
+++ b/src/gui/kernel/qwindow_p.h
@@ -59,8 +59,6 @@
#include <QtCore/private/qobject_p.h>
#include <QtGui/QIcon>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
#define QWINDOWSIZE_MAX ((1<<24)-1)
@@ -85,6 +83,7 @@ public:
, visible(false)
, exposed(false)
, windowState(Qt::WindowNoState)
+ , visibility(QWindow::Hidden)
, resizeEventPending(true)
, receivedExpose(false)
, positionPolicy(WindowFrameExclusive)
@@ -99,6 +98,7 @@ public:
, screen(0)
#ifndef QT_NO_CURSOR
, cursor(Qt::ArrowCursor)
+ , hasCursor(false)
#endif
{
isWindow = true;
@@ -110,6 +110,7 @@ public:
void maybeQuitOnLastWindowClosed();
#ifndef QT_NO_CURSOR
+ void setCursor(const QCursor *c = 0);
void applyCursor();
#endif
@@ -123,6 +124,8 @@ public:
virtual QWindow *eventReceiver() { Q_Q(QWindow); return q; }
+ void updateVisibility();
+
QWindow::SurfaceType surfaceType;
Qt::WindowFlags windowFlags;
QWindow *parentWindow;
@@ -135,12 +138,14 @@ public:
QIcon windowIcon;
QRect geometry;
Qt::WindowState windowState;
+ QWindow::Visibility visibility;
bool resizeEventPending;
bool receivedExpose;
PositionPolicy positionPolicy;
bool positionAutomatic;
Qt::ScreenOrientation contentOrientation;
qreal opacity;
+ QRegion mask;
QSize minimumSize;
QSize maximumSize;
@@ -155,12 +160,11 @@ public:
#ifndef QT_NO_CURSOR
QCursor cursor;
+ bool hasCursor;
#endif
};
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 <QtCore/qobjectdefs.h>
#include <QtCore/qnamespace.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -88,7 +87,6 @@ typedef QList<QWidget *> QWidgetList;
typedef QList<QWindow *> 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 K, class V> class QHash;
@@ -114,7 +111,6 @@ template<class V> class QSet;
typedef QSet<QWidget *> 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 <QtCore/qglobal.h>
-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.cpp b/src/gui/kernel/qwindowsysteminterface.cpp
index 27bb4bae00..d2add91d66 100644
--- a/src/gui/kernel/qwindowsysteminterface.cpp
+++ b/src/gui/kernel/qwindowsysteminterface.cpp
@@ -46,6 +46,7 @@
#include "private/qtouchdevice_p.h"
#include <QAbstractEventDispatcher>
#include <qpa/qplatformdrag.h>
+#include <qpa/qplatformintegration.h>
#include <qdebug.h>
QT_BEGIN_NAMESPACE
@@ -53,6 +54,8 @@ QT_BEGIN_NAMESPACE
QElapsedTimer QWindowSystemInterfacePrivate::eventTime;
bool QWindowSystemInterfacePrivate::synchronousWindowsSystemEvents = false;
+QWaitCondition QWindowSystemInterfacePrivate::eventsFlushed;
+QMutex QWindowSystemInterfacePrivate::flushEventMutex;
//------------------------------------------------------------
//
@@ -109,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);
}
@@ -122,6 +126,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);
@@ -505,9 +517,35 @@ void QWindowSystemInterface::handleExposeEvent(QWindow *tlw, const QRegion &regi
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);
+ 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();
+ QWindowSystemInterfacePrivate::handleWindowSystemEvent(e);
+ QWindowSystemInterfacePrivate::eventsFlushed.wait(&QWindowSystemInterfacePrivate::flushEventMutex);
+ } else {
+ sendWindowSystemEventsImplementation(QEventLoop::AllEvents);
+ }
}
bool QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::ProcessEventsFlags flags)
@@ -575,6 +613,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,
@@ -641,6 +685,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 5715b69ee5..212259c113 100644
--- a/src/gui/kernel/qwindowsysteminterface.h
+++ b/src/gui/kernel/qwindowsysteminterface.h
@@ -62,8 +62,6 @@
#include <QtCore/QEventLoop>
#include <QtGui/QVector2D>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QMimeData;
@@ -137,9 +135,12 @@ 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);
+
static void handleExposeEvent(QWindow *tlw, const QRegion &region);
#ifndef QT_NO_DRAGANDDROP
@@ -160,6 +161,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,
@@ -185,12 +187,17 @@ public:
static bool sendWindowSystemEvents(QEventLoop::ProcessEventsFlags flags);
static void setSynchronousWindowsSystemEvents(bool enable);
static void flushWindowSystemEvents();
+ static void deferredFlushWindowSystemEvents();
static int windowSystemEventsQueued();
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
-QT_END_HEADER
+
#endif // QWINDOWSYSTEMINTERFACE_H
diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h
index 4131568461..f1bc4667f7 100644
--- a/src/gui/kernel/qwindowsysteminterface_p.h
+++ b/src/gui/kernel/qwindowsysteminterface_p.h
@@ -58,8 +58,7 @@
#include <QPointer>
#include <QMutex>
#include <QList>
-
-QT_BEGIN_HEADER
+#include <QWaitCondition>
QT_BEGIN_NAMESPACE
@@ -90,7 +89,9 @@ public:
TabletEnterProximity = UserInputEvent | 0x15,
TabletLeaveProximity = UserInputEvent | 0x16,
PlatformPanel = UserInputEvent | 0x17,
- ContextMenu = UserInputEvent | 0x18
+ ContextMenu = UserInputEvent | 0x18,
+ ApplicationStateChanged = 0x19,
+ FlushEvents = 0x20
};
class WindowSystemEvent {
@@ -138,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<QWindow> activated;
+ Qt::FocusReason reason;
};
class WindowStateChangedEvent : public WindowSystemEvent {
@@ -154,6 +156,22 @@ public:
Qt::WindowState newState;
};
+ class ApplicationStateChangedEvent : public WindowSystemEvent {
+ public:
+ ApplicationStateChangedEvent(Qt::ApplicationState newState)
+ : WindowSystemEvent(ApplicationStateChanged), newState(newState)
+ { }
+
+ Qt::ApplicationState newState;
+ };
+
+ class FlushEventsEvent : public WindowSystemEvent {
+ public:
+ FlushEventsEvent()
+ : WindowSystemEvent(FlushEvents)
+ { }
+ };
+
class UserEvent : public WindowSystemEvent {
public:
UserEvent(QWindow * w, ulong time, EventType t)
@@ -287,9 +305,12 @@ public:
class FileOpenEvent : public WindowSystemEvent {
public:
FileOpenEvent(const QString& fileName)
- : WindowSystemEvent(FileOpen), fileName(fileName)
+ : WindowSystemEvent(FileOpen), url(QUrl::fromLocalFile(fileName))
+ { }
+ FileOpenEvent(const QUrl &url)
+ : WindowSystemEvent(FileOpen), url(url)
{ }
- QString fileName;
+ QUrl url;
};
class TabletEvent : public InputEvent {
@@ -367,9 +388,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()
@@ -400,7 +422,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;
}
}
@@ -421,10 +443,12 @@ public:
static QElapsedTimer eventTime;
static bool synchronousWindowsSystemEvents;
+ static QWaitCondition eventsFlushed;
+ static QMutex flushEventMutex;
+
static QList<QTouchEvent::TouchPoint> convertTouchPoints(const QList<QWindowSystemInterface::TouchPoint> &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 <QtCore/qdebug.h>
#include <QtCore/qdatastream.h>
-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 <QtGui/qgenericmatrix.h>
#include <QtCore/qrect.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -1119,6 +1117,4 @@ QT_DEPRECATED QGenericMatrix<N, M, float> qGenericMatrixFromMatrix4x4(const QMat
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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()
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 <QtGui/qvector3d.h>
#include <QtGui/qvector4d.h>
-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.cpp b/src/gui/math3d/qvector2d.cpp
index 6aa360fc6b..5710ee273a 100644
--- a/src/gui/math3d/qvector2d.cpp
+++ b/src/gui/math3d/qvector2d.cpp
@@ -229,6 +229,39 @@ void QVector2D::normalize()
}
/*!
+ \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)
Adds the given \a vector to this vector and returns a reference to
diff --git a/src/gui/math3d/qvector2d.h b/src/gui/math3d/qvector2d.h
index 9ac738fa2d..b3c2272287 100644
--- a/src/gui/math3d/qvector2d.h
+++ b/src/gui/math3d/qvector2d.h
@@ -45,8 +45,6 @@
#include <QtCore/qpoint.h>
#include <QtCore/qmetatype.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -84,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);
@@ -252,6 +253,4 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QVector2D &);
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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
@@ -348,6 +348,19 @@ QVector3D QVector3D::normal
}
/*!
+ \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
parameter is assumed to have been normalized to a unit vector.
diff --git a/src/gui/math3d/qvector3d.h b/src/gui/math3d/qvector3d.h
index 28700d7d97..49d9ca6bf8 100644
--- a/src/gui/math3d/qvector3d.h
+++ b/src/gui/math3d/qvector3d.h
@@ -45,8 +45,6 @@
#include <QtCore/qpoint.h>
#include <QtCore/qmetatype.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -99,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;
@@ -276,6 +275,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 <QtCore/qpoint.h>
#include <QtCore/qmetatype.h>
-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/opengl.pri b/src/gui/opengl/opengl.pri
index 2256f201d2..1eea007e16 100644
--- a/src/gui/opengl/opengl.pri
+++ b/src/gui/opengl/opengl.pri
@@ -27,7 +27,11 @@ 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 \
+ opengl/qopenglvertexarrayobject.h \
+ opengl/qopengldebug.h
SOURCES += opengl/qopengl.cpp \
opengl/qopenglfunctions.cpp \
@@ -43,6 +47,66 @@ 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 \
+ opengl/qopenglvertexarrayobject.cpp \
+ opengl/qopengldebug.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 \
+ opengl/qopenglqueryhelper_p.h \
+ opengl/qopengltimerquery.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 \
+ opengl/qopengltimerquery.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 9d29e07319..6e8be66806 100644
--- a/src/gui/opengl/qopengl.h
+++ b/src/gui/opengl/qopengl.h
@@ -42,18 +42,44 @@
#ifndef QOPENGL_H
#define QOPENGL_H
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_OPENGL
-#include <QtCore/qglobal.h>
+// Windows always needs this to ensure that APIENTRY gets defined
+#if defined(Q_OS_WIN)
+# include <QtCore/qt_windows.h>
+#endif
-QT_BEGIN_HEADER
+// 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 <OpenGLES/ES2/gl.h>
-# else
+# include <OpenGLES/ES2/glext.h>
+
+/*
+ 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 <GLES2/gl2.h>
-# endif
/*
Some GLES2 implementations (like the one on Harmattan) are missing the
@@ -63,27 +89,15 @@ QT_BEGIN_HEADER
*/
typedef char GLchar;
-# include <QtGui/qopengles2ext.h>
-# ifndef GL_DOUBLE
-# define GL_DOUBLE GL_FLOAT
-# endif
-# ifndef GLdouble
+# include <QtGui/qopengles2ext.h>
+# 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 <OpenGL/gl.h>
# if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
@@ -92,9 +106,6 @@ typedef GLfloat GLdouble;
# endif
# include <OpenGL/glext.h>
# else
-# if defined(Q_OS_WIN)
-# include <QtCore/qt_windows.h>
-# endif
# define GL_GLEXT_LEGACY // Prevents GL/gl.h form #including system glext.h
# include <GL/gl.h>
# include <QtGui/qopenglext.h>
@@ -102,18 +113,168 @@ 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
+# define QT_OPENGL_4_3
+#endif
#endif
QT_BEGIN_NAMESPACE
-QT_END_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
+
-QT_END_HEADER
+// This block is copied from glext.h and defines the types needed by
+// a few extension classes.
+
+#include <stddef.h>
+#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 <inttypes.h>
+#elif defined(__sun__) || defined(__digital__)
+#include <inttypes.h>
+#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 <inttypes.h>
+#elif defined(__SCO__) || defined(__USLC__)
+#include <stdint.h>
+#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 <stdint.h>
+#elif defined(_WIN32)
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+/* Fallback if nothing above works */
+#include <inttypes.h>
+#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;
+
+
+#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
#endif // QT_NO_OPENGL
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/qopengl_p.h b/src/gui/opengl/qopengl_p.h
index 84245fb670..3cf636751a 100644
--- a/src/gui/opengl/qopengl_p.h
+++ b/src/gui/opengl/qopengl_p.h
@@ -46,11 +46,9 @@
#include <private/qopenglcontext_p.h>
#include <QtCore/qset.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
-class QOpenGLExtensionMatcher
+class Q_GUI_EXPORT QOpenGLExtensionMatcher
{
public:
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..ab564e9001 100644
--- a/src/gui/opengl/qopenglbuffer.h
+++ b/src/gui/opengl/qopenglbuffer.h
@@ -42,13 +42,13 @@
#ifndef QOPENGLBUFFER_H
#define QOPENGLBUFFER_H
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_OPENGL
#include <QtCore/qscopedpointer.h>
#include <QtGui/qopengl.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -128,8 +128,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 <QOpenGLShaderProgram>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -87,7 +85,5 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/gui/opengl/qopengldebug.cpp b/src/gui/opengl/qopengldebug.cpp
new file mode 100644
index 0000000000..3920b75a05
--- /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 <giuseppe.dangelo@kdab.com>
+** 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 <QtCore/private/qobject_p.h>
+#include <QtCore/qglobal.h>
+#include <QtCore/qvarlengtharray.h>
+#include <QtGui/qopengl.h>
+
+#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<QOpenGLDebugMessage> 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 (QOPENGLF_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<GLuint> &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<GLuint> &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<GLenum, 8> glSources;
+ QVarLengthArray<GLenum, 8> glTypes;
+ QVarLengthArray<GLenum, 8> glSeverities;
+
+ if (ids.count() > 0) {
+ Q_ASSERT(severities == QOpenGLDebugMessage::AnySeverity);
+
+ // The GL_KHR_debug extension says:
+ //
+ // - If <count> is greater than zero, then <ids> is an array of <count>
+ // message IDs for the specified combination of <source> and <type>. In
+ // this case, if <source> or <type> is DONT_CARE, or <severity> is not
+ // DONT_CARE, the error INVALID_OPERATION is generated. If <count> is
+ // zero, the value if <ids> 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<QOpenGLDebugLoggerPrivate *>(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<QOpenGLDebugMessage>();
+}
+
+/*!
+ 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<void **>(&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<GLuint>(),
+ 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<GLuint> &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<GLuint>(),
+ 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<GLuint> &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<QOpenGLDebugMessage> QOpenGLDebugLogger::loggedMessages() const
+{
+ Q_D(const QOpenGLDebugLogger);
+ if (!d->initialized) {
+ qWarning("QOpenGLDebugLogger::loggedMessages(): object must be initialized before reading logged messages");
+ return QList<QOpenGLDebugMessage>();
+ }
+
+ 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<QOpenGLDebugMessage> 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 <giuseppe.dangelo@kdab.com>
+** 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 <QtCore/qglobal.h>
+
+#ifndef QT_NO_OPENGL
+
+#include <QtCore/qshareddata.h>
+#include <QtCore/qflags.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qvector.h>
+#include <QtCore/qmetatype.h>
+#include <QtCore/qdebug.h>
+#include <QtGui/qopenglcontext.h>
+
+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<QOpenGLDebugMessagePrivate> 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<GLuint> &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<GLuint> &ids,
+ QOpenGLDebugMessage::Sources sources = QOpenGLDebugMessage::AnySource,
+ QOpenGLDebugMessage::Types types = QOpenGLDebugMessage::AnyType);
+
+ QList<QOpenGLDebugMessage> 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
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 <private/qopenglcontext_p.h>
#include <private/qopenglcustomshaderstage_p.h>
-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/qopengles2ext.h b/src/gui/opengl/qopengles2ext.h
index 61bfb595cc..5926d5bbd5 100644
--- a/src/gui/opengl/qopengles2ext.h
+++ b/src/gui/opengl/qopengles2ext.h
@@ -3,10 +3,11 @@
#if 0
#pragma qt_no_master_include
+#pragma qt_sync_skip_header_check
#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" {
@@ -99,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
@@ -122,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 +185,85 @@ typedef void* GLeglImageOES;
#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
*------------------------------------------------------------------------*/
@@ -200,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
@@ -216,33 +328,38 @@ typedef void* GLeglImageOES;
#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
+/* 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
+#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
@@ -250,12 +367,8 @@ 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
@@ -268,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 <inttypes.h>
+ * 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
@@ -282,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
@@ -330,15 +489,34 @@ 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
-/* 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
#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. */
@@ -380,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. */
@@ -427,10 +610,10 @@ typedef void* GLeglImageOES;
/* 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
@@ -440,12 +623,12 @@ typedef void* GLeglImageOES;
#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
@@ -458,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
/*------------------------------------------------------------------------*
@@ -478,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
/*------------------------------------------------------------------------*
@@ -509,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
@@ -576,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
@@ -589,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
@@ -606,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. */
@@ -623,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. */
@@ -818,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 +1145,43 @@ typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
#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
*------------------------------------------------------------------------*/
@@ -939,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
@@ -957,52 +1256,62 @@ 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);
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 */
-#ifndef GL_ANGLE_pack_reverse_row_order
+#ifndef GL_ANGLE_pack_reverse_row_order
#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
+#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);
#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 */
@@ -1016,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
@@ -1030,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
@@ -1087,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
@@ -1098,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
@@ -1216,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
@@ -1322,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
@@ -1362,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
@@ -1388,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
@@ -1417,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
@@ -1440,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
diff --git a/src/gui/opengl/qopenglext.h b/src/gui/opengl/qopenglext.h
index 5d21cb6eea..dfdb8249d9 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
@@ -12,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
@@ -20,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.
@@ -34,9 +35,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: 2013-02-07 01:42:49 -0800 (Thu, 07 Feb 2013) $ */
/* Current version at http://www.opengl.org/registry/ */
-#define GL_GLEXT_VERSION 82
+#define GL_GLEXT_VERSION 86
/* Function declaration macros - to move into glplatform.h */
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -93,9 +94,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 +113,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 +239,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 +295,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 +348,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 +370,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 +454,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 +477,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 +711,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 +731,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 +996,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 +1146,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 +2012,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 +2243,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 +2421,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 +2664,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 +4900,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 +4925,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
@@ -4373,11 +5015,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
@@ -4743,7 +5411,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 +5928,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
@@ -5344,27 +6013,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
@@ -5444,20 +6105,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
@@ -5489,6 +6153,50 @@ 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
+#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
+
+#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
+
/*************************************************************/
@@ -5588,10 +6296,19 @@ 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
+#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
@@ -5601,18 +6318,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 +6351,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 +6403,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 +6441,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 +6493,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 +6538,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 +6971,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 +7072,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 +7853,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 +8537,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 +8553,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 +8620,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 +9597,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 +9957,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
@@ -9944,15 +10910,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);
@@ -10059,10 +11025,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
@@ -10116,10 +11082,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
@@ -10495,13 +11755,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
@@ -11571,7 +12831,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 +12842,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 +13080,66 @@ 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
+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
+
+#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
}
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..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 <QtCore/qglobal.h>
+
#ifndef QT_NO_OPENGL
#include <QtGui/qopengl.h>
@@ -49,8 +51,6 @@
#include <QtCore/qscopedpointer.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -161,8 +161,6 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QT_NO_OPENGL
#endif // QOPENGLFRAMEBUFFEROBJECT_H
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;
diff --git a/src/gui/opengl/qopenglfunctions.h b/src/gui/opengl/qopenglfunctions.h
index 5f3b63d0a0..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 <QtCore/qglobal.h>
+
#ifndef QT_NO_OPENGL
#ifdef __GLEW_H__
@@ -71,31 +73,8 @@
#define Q_OPENGL_FUNCTIONS_DEBUG
#endif
-QT_BEGIN_HEADER
-
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
@@ -1520,8 +1499,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/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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_1_0::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..189d06bfec
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_1_0.h
@@ -0,0 +1,1930 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_1_1::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..fbe714c9ad
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_1_1.h
@@ -0,0 +1,2120 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_1_2::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..b0b06da76e
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_1_2.h
@@ -0,0 +1,2358 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_1_3::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..362a60649b
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_1_3.h
@@ -0,0 +1,2644 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_1_4::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..fbb5b2e86c
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_1_4.h
@@ -0,0 +1,2924 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_1_5::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..cdb2140a5c
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_1_5.h
@@ -0,0 +1,3047 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_2_0::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..afc5eabb38
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_2_0.h
@@ -0,0 +1,3615 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_2_1::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..c1d291fba4
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_2_1.h
@@ -0,0 +1,3660 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(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<QOpenGLFunctions_3_0_DeprecatedBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_3_0::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..f586bdec58
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_3_0.h
@@ -0,0 +1,4174 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(d);
+ d->refs.ref();
+
+ QAbstractOpenGLFunctions::initializeOpenGLFunctions();
+ }
+ return isInitialized();
+}
+
+bool QOpenGLFunctions_3_1::isContextCompatible(QOpenGLContext *context)
+{
+ Q_ASSERT(context);
+ QSurfaceFormat f = context->format();
+ const QPair<int, int> 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..46beec85e0
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_3_1.h
@@ -0,0 +1,1592 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(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<QOpenGLFunctions_3_0_DeprecatedBackend*>(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<int, int> 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..f279f1037a
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_3_2_compatibility.h
@@ -0,0 +1,4378 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<int, int> 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..b3d9a5040c
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_3_2_core.h
@@ -0,0 +1,1711 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(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<QOpenGLFunctions_3_0_DeprecatedBackend*>(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<int, int> 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..95e000f88d
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_3_3_compatibility.h
@@ -0,0 +1,4735 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<int, int> 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..0ffb156831
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_3_3_core.h
@@ -0,0 +1,2064 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_4_0_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(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<QOpenGLFunctions_3_0_DeprecatedBackend*>(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<int, int> 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..a77a2951b1
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_4_0_compatibility.h
@@ -0,0 +1,5020 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_4_0_CoreBackend*>(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<int, int> 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..64b75a7374
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_4_0_core.h
@@ -0,0 +1,2345 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_4_0_CoreBackend*>(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<QOpenGLFunctions_4_1_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(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<QOpenGLFunctions_3_0_DeprecatedBackend*>(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<int, int> 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..3d7f703b8d
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_4_1_compatibility.h
@@ -0,0 +1,5557 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_4_0_CoreBackend*>(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<QOpenGLFunctions_4_1_CoreBackend*>(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<int, int> 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..90ec87568e
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_4_1_core.h
@@ -0,0 +1,2878 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_4_0_CoreBackend*>(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<QOpenGLFunctions_4_1_CoreBackend*>(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<QOpenGLFunctions_4_2_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(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<QOpenGLFunctions_3_0_DeprecatedBackend*>(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<int, int> 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..65bb26767a
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_4_2_compatibility.h
@@ -0,0 +1,5638 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_4_0_CoreBackend*>(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<QOpenGLFunctions_4_1_CoreBackend*>(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<QOpenGLFunctions_4_2_CoreBackend*>(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<int, int> 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..2abe9cb033
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_4_2_core.h
@@ -0,0 +1,2955 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_4_0_CoreBackend*>(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<QOpenGLFunctions_4_1_CoreBackend*>(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<QOpenGLFunctions_4_2_CoreBackend*>(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<QOpenGLFunctions_4_3_CoreBackend*>(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<QOpenGLFunctions_1_0_DeprecatedBackend*>(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<QOpenGLFunctions_1_1_DeprecatedBackend*>(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<QOpenGLFunctions_1_2_DeprecatedBackend*>(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<QOpenGLFunctions_1_3_DeprecatedBackend*>(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<QOpenGLFunctions_1_4_DeprecatedBackend*>(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<QOpenGLFunctions_2_0_DeprecatedBackend*>(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<QOpenGLFunctions_3_0_DeprecatedBackend*>(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<int, int> 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..124685d0c0
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_4_3_compatibility.h
@@ -0,0 +1,5845 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<QOpenGLFunctions_1_0_CoreBackend*>(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<QOpenGLFunctions_1_1_CoreBackend*>(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<QOpenGLFunctions_1_2_CoreBackend*>(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<QOpenGLFunctions_1_3_CoreBackend*>(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<QOpenGLFunctions_1_4_CoreBackend*>(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<QOpenGLFunctions_1_5_CoreBackend*>(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<QOpenGLFunctions_2_0_CoreBackend*>(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<QOpenGLFunctions_2_1_CoreBackend*>(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<QOpenGLFunctions_3_0_CoreBackend*>(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<QOpenGLFunctions_3_1_CoreBackend*>(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<QOpenGLFunctions_3_2_CoreBackend*>(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<QOpenGLFunctions_3_3_CoreBackend*>(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<QOpenGLFunctions_4_0_CoreBackend*>(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<QOpenGLFunctions_4_1_CoreBackend*>(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<QOpenGLFunctions_4_2_CoreBackend*>(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<QOpenGLFunctions_4_3_CoreBackend*>(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<int, int> 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..c004594eb8
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_4_3_core.h
@@ -0,0 +1,3158 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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 && !QT_OPENGL_ES_2
+
+#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<int, int> 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..9c14567723
--- /dev/null
+++ b/src/gui/opengl/qopenglfunctions_es2.h
@@ -0,0 +1,933 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#if defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+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_OPENGL_ES_2
+
+#endif
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)
{
@@ -249,6 +251,14 @@ void QOpenGLPaintDevice::setSize(const QSize &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 66850c73fc..c05571c928 100644
--- a/src/gui/opengl/qopenglpaintdevice.h
+++ b/src/gui/opengl/qopenglpaintdevice.h
@@ -42,14 +42,14 @@
#ifndef QOPENGLPAINTDEVICE_H
#define QOPENGLPAINTDEVICE_H
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_OPENGL
#include <QtGui/qpaintdevice.h>
#include <QtGui/qopengl.h>
#include <QtGui/qopenglcontext.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -70,6 +70,7 @@ public:
QOpenGLContext *context() const;
QSize size() const;
void setSize(const QSize &size);
+ void setDevicePixelRatio(qreal devicePixelRatio);
qreal dotsPerMeterX() const;
qreal dotsPerMeterY() const;
@@ -91,8 +92,6 @@ protected:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QT_NO_OPENGL
#endif // QOPENGLPAINTDEVICE_H
diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp
index 9fd8a7ada7..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...
@@ -1069,9 +1071,23 @@ void QOpenGL2PaintEngineExPrivate::resetClipIfNeeded()
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
}
+bool QOpenGL2PaintEngineExPrivate::prepareForCachedGlyphDraw(const QFontEngineGlyphCache &cache)
+{
+ 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);
+ transform.scale(cache.transform().m11(), cache.transform().m22());
+
+ return ret;
+}
+
bool QOpenGL2PaintEngineExPrivate::prepareForDraw(bool srcPixelsAreOpaque)
{
- if (brushTextureDirty && mode != ImageDrawingMode && mode != ImageArrayDrawingMode)
+ if (brushTextureDirty && (mode == TextDrawingMode || mode == BrushDrawingMode))
updateBrushTexture();
if (compositionModeDirty)
@@ -1091,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);
@@ -1116,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) {
@@ -1407,11 +1423,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 +1475,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 +1489,7 @@ void QOpenGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &text
}
}
- if (drawCached) {
+ if (shouldDrawCachedGlyphs(ti.fontEngine, s->matrix)) {
QVarLengthArray<QFixedPoint> positions;
QVarLengthArray<glyph_t> glyphs;
QTransform matrix = QTransform::fromTranslate(p.x(), p.y());
@@ -1531,6 +1538,12 @@ namespace {
// #define QT_OPENGL_DRAWCACHEDGLYPHS_INDEX_ARRAY_VBO
+bool QOpenGL2PaintEngineEx::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &t) const
+{
+ // Don't try to cache vastly transformed fonts
+ return t.type() < QTransform::TxProject && QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, t);
+}
+
void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType,
QStaticTextItem *staticTextItem)
{
@@ -1542,10 +1555,18 @@ 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 = 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, 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;
}
@@ -1583,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);
@@ -1637,8 +1661,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));
@@ -1679,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;
@@ -1711,9 +1737,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;
@@ -1734,7 +1760,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);
@@ -1758,22 +1784,31 @@ 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);
}
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
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;
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();
@@ -1889,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 93e1b4232e..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
@@ -157,7 +158,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)
@@ -235,6 +237,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/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 <QtCore/qglobal.h>
+
+#if !defined(QT_OPENGL_ES_2)
+
+#include <QtGui/QOpenGLContext>
+
+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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetQueryObjectuiv"));
+ GetQueryObjectiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetQueryObjectiv"));
+ GetQueryiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetQueryiv"));
+ EndQuery = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glEndQuery"));
+ BeginQuery = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBeginQuery"));
+ IsQuery = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsQuery"));
+ DeleteQueries = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteQueries"));
+ GenQueries = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenQueries"));
+
+ // Core in OpenGL >=3.2
+ GetInteger64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint64 *)>(context->getProcAddress("glGetInteger64v"));
+
+ // Core in OpenGL >=3.3 / ARB_timer_query
+ GetQueryObjectui64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64 *)>(context->getProcAddress("glGetQueryObjectui64v"));
+ GetQueryObjecti64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint64 *)>(context->getProcAddress("glGetQueryObjecti64v"));
+ QueryCounter = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(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/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 <syslog.h>
#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.cpp b/src/gui/opengl/qopenglshaderprogram.cpp
index 88c9c8008c..1cde0cb92d 100644
--- a/src/gui/opengl/qopenglshaderprogram.cpp
+++ b/src/gui/opengl/qopenglshaderprogram.cpp
@@ -49,6 +49,11 @@
#include <QtCore/qvector.h>
#include <QtGui/qtransform.h>
#include <QtGui/QColor>
+#include <QtGui/QSurfaceFormat>
+
+#if !defined(QT_OPENGL_ES_2)
+#include <QtGui/qopenglfunctions_4_0_core.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -145,6 +150,14 @@ 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).
+ \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).
+ \value Compute Compute shaders written in the OpenGL shading language (GLSL),
+ based on the core feature (requires OpenGL >= 4.3).
*/
class QOpenGLShaderPrivate : public QObjectPrivate
@@ -156,7 +169,20 @@ public:
, shaderType(type)
, compiled(false)
, 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)
+ supportsGeometryShaders = (f.version() >= qMakePair<int, int>(3, 2));
+ else if (shaderType & (QOpenGLShader::TessellationControl | QOpenGLShader::TessellationEvaluation))
+ supportsTessellationShaders = (f.version() >= qMakePair<int, int>(4, 0));
+#endif
}
~QOpenGLShaderPrivate();
@@ -167,6 +193,14 @@ public:
QOpenGLFunctions *glfuncs;
+#ifndef QT_OPENGL_ES_2
+ // Support for geometry shaders
+ bool supportsGeometryShaders;
+
+ // Support for tessellation shaders
+ bool supportsTessellationShaders;
+#endif
+
bool create();
bool compile(QOpenGLShader *q);
void deleteShader();
@@ -192,10 +226,25 @@ 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
+#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
+#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);
+ }
if (!shader) {
qWarning() << "QOpenGLShader: could not create shader";
return false;
@@ -234,6 +283,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;
@@ -329,18 +380,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
@@ -380,10 +425,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);
@@ -510,6 +564,9 @@ public:
, inited(false)
, removingShaders(false)
, glfuncs(new QOpenGLFunctions)
+#ifndef QT_OPENGL_ES_2
+ , tessellationFuncs(0)
+#endif
{
}
~QOpenGLShaderProgramPrivate();
@@ -525,6 +582,11 @@ public:
QOpenGLFunctions *glfuncs;
+#ifndef QT_OPENGL_ES_2
+ // Tessellation shader support
+ QOpenGLFunctions_4_0_Core *tessellationFuncs;
+#endif
+
bool hasShader(QOpenGLShader::ShaderType type) const;
};
@@ -582,6 +644,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<int, int>(4, 0)) {
+ d->tessellationFuncs = context->versionFunctions<QOpenGLFunctions_4_0_Core>();
+ d->tessellationFuncs->initializeOpenGLFunctions();
+ }
+#endif
+
GLuint program = d->glfuncs->glCreateProgram();
if (!program) {
qWarning() << "QOpenGLShaderProgram: could not create shader program";
@@ -2927,6 +2999,198 @@ void QOpenGLShaderProgram::setUniformValueArray(const char *name, const QMatrix4
}
/*!
+ 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;
+}
+
+/*!
+ 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<float> &levels)
+{
+#if defined(QT_OPENGL_4)
+ QVector<float> 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<float> QOpenGLShaderProgram::defaultOuterTessellationLevels() const
+{
+ QVector<float> 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<float> &levels)
+{
+#if defined(QT_OPENGL_4)
+ QVector<float> 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<float> QOpenGLShaderProgram::defaultInnerTessellationLevels() const
+{
+ QVector<float> 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.
@@ -2972,9 +3236,37 @@ bool QOpenGLShader::hasOpenGLShaders(ShaderType type, QOpenGLContext *context)
if (!context)
return false;
- if ((type & ~(Vertex | Fragment)) || type == 0)
+ if ((type & ~(Geometry | Vertex | Fragment | TessellationControl | TessellationEvaluation | Compute)) || type == 0)
+ return false;
+
+ QSurfaceFormat format = context->format();
+ if (type == Geometry) {
+#ifndef QT_OPENGL_ES_2
+ // Geometry shaders require OpenGL 3.2 or newer
+ QSurfaceFormat format = context->format();
+ return (format.version() >= qMakePair<int, int>(3, 2));
+#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<int, int>(4, 0));
+#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<int, int>(4, 3));
+#else
+ // No compute shader support without OpenGL 4.3 or newer
+ 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 cd05d0f96b..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 <QtCore/qglobal.h>
+
#ifndef QT_NO_OPENGL
#include <QtGui/qopengl.h>
@@ -50,8 +52,6 @@
#include <QtGui/qvector4d.h>
#include <QtGui/qmatrix4x4.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -65,8 +65,12 @@ class Q_GUI_EXPORT QOpenGLShader : public QObject
public:
enum ShaderTypeBit
{
- Vertex = 0x0001,
- Fragment = 0x0002
+ Vertex = 0x0001,
+ Fragment = 0x0002,
+ Geometry = 0x0004,
+ TessellationControl = 0x0008,
+ TessellationEvaluation = 0x0010,
+ Compute = 0x0020
};
Q_DECLARE_FLAGS(ShaderType, ShaderTypeBit)
@@ -128,6 +132,17 @@ public:
GLuint programId() const;
+ int maxGeometryOutputVertices() const;
+
+ void setPatchVertexCount(int count);
+ int patchVertexCount() const;
+
+ void setDefaultOuterTessellationLevels(const QVector<float> &levels);
+ QVector<float> defaultOuterTessellationLevels() const;
+
+ void setDefaultInnerTessellationLevels(const QVector<float> &levels);
+ QVector<float> defaultInnerTessellationLevels() const;
+
void bindAttributeLocation(const char *name, int location);
void bindAttributeLocation(const QByteArray& name, int location);
void bindAttributeLocation(const QString& name, int location);
@@ -293,8 +308,6 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QT_NO_OPENGL
#endif
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<const QImage &>(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<quint64, QOpenGLCachedTexture> m_cache;
+ bool m_useByteSwapImage;
};
QT_END_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<uchar> 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/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 <QtCore/private/qobject_p.h>
+#include <QtGui/QOpenGLContext>
+
+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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64EXT *)>(context->getProcAddress("glGetQueryObjectui64vEXT"));
+ GetQueryObjecti64vEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint64EXT *)>(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<int, int>(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<int, int>(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<GLuint64> samples() const;
+ QVector<GLuint64> intervals() const;
+ void reset();
+
+ QVector<GLuint> timers;
+ mutable QVector<GLuint64> 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<int, int>(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<int, int>(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<GLuint64> 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<GLuint64> QOpenGLTimeMonitorPrivate::intervals() const
+{
+ QVector<GLuint64> intervals(timers.size() - 1);
+ if (!ext) {
+ // Obtain the timestamp samples and calculate the interval durations
+ const QVector<GLuint64> 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<GLuint> 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<GLuint64> 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<GLuint64> 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 <QtCore/QObject>
+#include <QtGui/qopengl.h>
+
+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<GLuint> objectIds() const;
+
+ int recordSample();
+
+ bool isResultAvailable() const;
+
+ QVector<GLuint64> waitForSamples() const;
+ QVector<GLuint64> waitForIntervals() const;
+
+ void reset();
+
+private:
+ Q_DECLARE_PRIVATE(QOpenGLTimeMonitor)
+ Q_DISABLE_COPY(QOpenGLTimeMonitor)
+};
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_OPENGL
+
+#endif // QOPENGLTIMERQUERY_H
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_<MAJOR VERSION>_<MINOR VERSION>[_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<QOpenGLContext*>(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<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei )>(GetProcAddress(handle, "glViewport"));
+ DepthRange = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(GetProcAddress(handle, "glDepthRange"));
+ IsEnabled = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glIsEnabled"));
+ GetTexLevelParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLint *)>(GetProcAddress(handle, "glGetTexLevelParameteriv"));
+ GetTexLevelParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLfloat *)>(GetProcAddress(handle, "glGetTexLevelParameterfv"));
+ GetTexParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(GetProcAddress(handle, "glGetTexParameteriv"));
+ GetTexParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(GetProcAddress(handle, "glGetTexParameterfv"));
+ GetTexImage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLenum , GLvoid *)>(GetProcAddress(handle, "glGetTexImage"));
+ GetString = reinterpret_cast<const GLubyte * (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glGetString"));
+ GetIntegerv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint *)>(GetProcAddress(handle, "glGetIntegerv"));
+ GetFloatv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(GetProcAddress(handle, "glGetFloatv"));
+ GetError = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glGetError"));
+ GetDoublev = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble *)>(GetProcAddress(handle, "glGetDoublev"));
+ GetBooleanv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLboolean *)>(GetProcAddress(handle, "glGetBooleanv"));
+ ReadPixels = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , GLvoid *)>(GetProcAddress(handle, "glReadPixels"));
+ ReadBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glReadBuffer"));
+ PixelStorei = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(GetProcAddress(handle, "glPixelStorei"));
+ PixelStoref = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(GetProcAddress(handle, "glPixelStoref"));
+ DepthFunc = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glDepthFunc"));
+ StencilOp = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum )>(GetProcAddress(handle, "glStencilOp"));
+ StencilFunc = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLuint )>(GetProcAddress(handle, "glStencilFunc"));
+ LogicOp = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glLogicOp"));
+ BlendFunc = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(GetProcAddress(handle, "glBlendFunc"));
+ Flush = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glFlush"));
+ Finish = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glFinish"));
+ Enable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glEnable"));
+ Disable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glDisable"));
+ DepthMask = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLboolean )>(GetProcAddress(handle, "glDepthMask"));
+ ColorMask = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLboolean , GLboolean , GLboolean , GLboolean )>(GetProcAddress(handle, "glColorMask"));
+ StencilMask = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(GetProcAddress(handle, "glStencilMask"));
+ ClearDepth = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(GetProcAddress(handle, "glClearDepth"));
+ ClearStencil = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(GetProcAddress(handle, "glClearStencil"));
+ ClearColor = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glClearColor"));
+ Clear = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(GetProcAddress(handle, "glClear"));
+ DrawBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glDrawBuffer"));
+ TexImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(GetProcAddress(handle, "glTexImage2D"));
+ TexImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(GetProcAddress(handle, "glTexImage1D"));
+ TexParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(GetProcAddress(handle, "glTexParameteriv"));
+ TexParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(GetProcAddress(handle, "glTexParameteri"));
+ TexParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(GetProcAddress(handle, "glTexParameterfv"));
+ TexParameterf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(GetProcAddress(handle, "glTexParameterf"));
+ Scissor = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei )>(GetProcAddress(handle, "glScissor"));
+ PolygonMode = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(GetProcAddress(handle, "glPolygonMode"));
+ PointSize = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(GetProcAddress(handle, "glPointSize"));
+ LineWidth = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(GetProcAddress(handle, "glLineWidth"));
+ Hint = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(GetProcAddress(handle, "glHint"));
+ FrontFace = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glFrontFace"));
+ CullFace = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glCullFace"));
+#else
+ Viewport = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glViewport"));
+ DepthRange = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(context->getProcAddress("glDepthRange"));
+ IsEnabled = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glIsEnabled"));
+ GetTexLevelParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLint *)>(context->getProcAddress("glGetTexLevelParameteriv"));
+ GetTexLevelParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLfloat *)>(context->getProcAddress("glGetTexLevelParameterfv"));
+ GetTexParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetTexParameteriv"));
+ GetTexParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetTexParameterfv"));
+ GetTexImage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetTexImage"));
+ GetString = reinterpret_cast<const GLubyte * (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glGetString"));
+ GetIntegerv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint *)>(context->getProcAddress("glGetIntegerv"));
+ GetFloatv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(context->getProcAddress("glGetFloatv"));
+ GetError = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glGetError"));
+ GetDoublev = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble *)>(context->getProcAddress("glGetDoublev"));
+ GetBooleanv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLboolean *)>(context->getProcAddress("glGetBooleanv"));
+ ReadPixels = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glReadPixels"));
+ ReadBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glReadBuffer"));
+ PixelStorei = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glPixelStorei"));
+ PixelStoref = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glPixelStoref"));
+ DepthFunc = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glDepthFunc"));
+ StencilOp = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum )>(context->getProcAddress("glStencilOp"));
+ StencilFunc = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLuint )>(context->getProcAddress("glStencilFunc"));
+ LogicOp = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glLogicOp"));
+ BlendFunc = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glBlendFunc"));
+ Flush = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glFlush"));
+ Finish = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glFinish"));
+ Enable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glEnable"));
+ Disable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glDisable"));
+ DepthMask = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLboolean )>(context->getProcAddress("glDepthMask"));
+ ColorMask = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLboolean , GLboolean , GLboolean , GLboolean )>(context->getProcAddress("glColorMask"));
+ StencilMask = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glStencilMask"));
+ ClearDepth = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(context->getProcAddress("glClearDepth"));
+ ClearStencil = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(context->getProcAddress("glClearStencil"));
+ ClearColor = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glClearColor"));
+ Clear = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glClear"));
+ DrawBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glDrawBuffer"));
+ TexImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTexImage2D"));
+ TexImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTexImage1D"));
+ TexParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glTexParameteriv"));
+ TexParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glTexParameteri"));
+ TexParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glTexParameterfv"));
+ TexParameterf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glTexParameterf"));
+ Scissor = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glScissor"));
+ PolygonMode = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glPolygonMode"));
+ PointSize = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glPointSize"));
+ LineWidth = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glLineWidth"));
+ Hint = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glHint"));
+ FrontFace = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glFrontFace"));
+ CullFace = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(GetProcAddress(handle, "glIndexubv"));
+ Indexub = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte )>(GetProcAddress(handle, "glIndexub"));
+ IsTexture = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(GetProcAddress(handle, "glIsTexture"));
+ GenTextures = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(GetProcAddress(handle, "glGenTextures"));
+ DeleteTextures = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(GetProcAddress(handle, "glDeleteTextures"));
+ BindTexture = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(GetProcAddress(handle, "glBindTexture"));
+ TexSubImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(GetProcAddress(handle, "glTexSubImage2D"));
+ TexSubImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *)>(GetProcAddress(handle, "glTexSubImage1D"));
+ CopyTexSubImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(GetProcAddress(handle, "glCopyTexSubImage2D"));
+ CopyTexSubImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei )>(GetProcAddress(handle, "glCopyTexSubImage1D"));
+ CopyTexImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLsizei , GLint )>(GetProcAddress(handle, "glCopyTexImage2D"));
+ CopyTexImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLint )>(GetProcAddress(handle, "glCopyTexImage1D"));
+ PolygonOffset = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(GetProcAddress(handle, "glPolygonOffset"));
+ GetPointerv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLvoid* *)>(GetProcAddress(handle, "glGetPointerv"));
+ DrawElements = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *)>(GetProcAddress(handle, "glDrawElements"));
+ DrawArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei )>(GetProcAddress(handle, "glDrawArrays"));
+#else
+ Indexubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(context->getProcAddress("glIndexubv"));
+ Indexub = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte )>(context->getProcAddress("glIndexub"));
+ IsTexture = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsTexture"));
+ GenTextures = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenTextures"));
+ DeleteTextures = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteTextures"));
+ BindTexture = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindTexture"));
+ TexSubImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTexSubImage2D"));
+ TexSubImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTexSubImage1D"));
+ CopyTexSubImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyTexSubImage2D"));
+ CopyTexSubImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyTexSubImage1D"));
+ CopyTexImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLsizei , GLint )>(context->getProcAddress("glCopyTexImage2D"));
+ CopyTexImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLint )>(context->getProcAddress("glCopyTexImage1D"));
+ PolygonOffset = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glPolygonOffset"));
+ GetPointerv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLvoid* *)>(context->getProcAddress("glGetPointerv"));
+ DrawElements = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *)>(context->getProcAddress("glDrawElements"));
+ DrawArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyTexSubImage3D"));
+ TexSubImage3D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTexSubImage3D"));
+ DrawRangeElements = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei , GLenum , const GLvoid *)>(context->getProcAddress("glDrawRangeElements"));
+ BlendEquation = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glBlendEquation"));
+ BlendColor = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLvoid *)>(context->getProcAddress("glGetCompressedTexImage"));
+ CompressedTexSubImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexSubImage1D"));
+ CompressedTexSubImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexSubImage2D"));
+ CompressedTexSubImage3D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexSubImage3D"));
+ CompressedTexImage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexImage1D"));
+ CompressedTexImage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexImage2D"));
+ CompressedTexImage3D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexImage3D"));
+ SampleCoverage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLboolean )>(context->getProcAddress("glSampleCoverage"));
+ ActiveTexture = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glPointParameteriv"));
+ PointParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glPointParameteri"));
+ PointParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glPointParameterfv"));
+ PointParameterf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glPointParameterf"));
+ MultiDrawElements = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLsizei *, GLenum , const GLvoid* const *, GLsizei )>(context->getProcAddress("glMultiDrawElements"));
+ MultiDrawArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *, const GLsizei *, GLsizei )>(context->getProcAddress("glMultiDrawArrays"));
+ BlendFuncSeparate = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLvoid* *)>(context->getProcAddress("glGetBufferPointerv"));
+ GetBufferParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetBufferParameteriv"));
+ UnmapBuffer = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glUnmapBuffer"));
+ MapBuffer = reinterpret_cast<GLvoid* (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glMapBuffer"));
+ GetBufferSubData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLintptr , GLsizeiptr , GLvoid *)>(context->getProcAddress("glGetBufferSubData"));
+ BufferSubData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLintptr , GLsizeiptr , const GLvoid *)>(context->getProcAddress("glBufferSubData"));
+ BufferData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizeiptr , const GLvoid *, GLenum )>(context->getProcAddress("glBufferData"));
+ IsBuffer = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsBuffer"));
+ GenBuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenBuffers"));
+ DeleteBuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteBuffers"));
+ BindBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindBuffer"));
+ GetQueryObjectuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetQueryObjectuiv"));
+ GetQueryObjectiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetQueryObjectiv"));
+ GetQueryiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetQueryiv"));
+ EndQuery = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glEndQuery"));
+ BeginQuery = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBeginQuery"));
+ IsQuery = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsQuery"));
+ DeleteQueries = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteQueries"));
+ GenQueries = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLboolean , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexAttribPointer"));
+ ValidateProgram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glValidateProgram"));
+ UniformMatrix4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix4fv"));
+ UniformMatrix3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix3fv"));
+ UniformMatrix2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix2fv"));
+ Uniform4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint *)>(context->getProcAddress("glUniform4iv"));
+ Uniform3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint *)>(context->getProcAddress("glUniform3iv"));
+ Uniform2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint *)>(context->getProcAddress("glUniform2iv"));
+ Uniform1iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint *)>(context->getProcAddress("glUniform1iv"));
+ Uniform4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glUniform4fv"));
+ Uniform3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glUniform3fv"));
+ Uniform2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glUniform2fv"));
+ Uniform1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glUniform1fv"));
+ Uniform4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glUniform4i"));
+ Uniform3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glUniform3i"));
+ Uniform2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glUniform2i"));
+ Uniform1i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glUniform1i"));
+ Uniform4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glUniform4f"));
+ Uniform3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glUniform3f"));
+ Uniform2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat )>(context->getProcAddress("glUniform2f"));
+ Uniform1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat )>(context->getProcAddress("glUniform1f"));
+ UseProgram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glUseProgram"));
+ ShaderSource = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLchar* const *, const GLint *)>(context->getProcAddress("glShaderSource"));
+ LinkProgram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glLinkProgram"));
+ IsShader = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsShader"));
+ IsProgram = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsProgram"));
+ GetVertexAttribPointerv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLvoid* *)>(context->getProcAddress("glGetVertexAttribPointerv"));
+ GetVertexAttribiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVertexAttribiv"));
+ GetVertexAttribfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetVertexAttribfv"));
+ GetVertexAttribdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLdouble *)>(context->getProcAddress("glGetVertexAttribdv"));
+ GetUniformiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint *)>(context->getProcAddress("glGetUniformiv"));
+ GetUniformfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat *)>(context->getProcAddress("glGetUniformfv"));
+ GetUniformLocation = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetUniformLocation"));
+ GetShaderSource = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetShaderSource"));
+ GetShaderInfoLog = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetShaderInfoLog"));
+ GetShaderiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetShaderiv"));
+ GetProgramInfoLog = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetProgramInfoLog"));
+ GetProgramiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetProgramiv"));
+ GetAttribLocation = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetAttribLocation"));
+ GetAttachedShaders = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLuint *)>(context->getProcAddress("glGetAttachedShaders"));
+ GetActiveUniform = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLint *, GLenum *, GLchar *)>(context->getProcAddress("glGetActiveUniform"));
+ GetActiveAttrib = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLint *, GLenum *, GLchar *)>(context->getProcAddress("glGetActiveAttrib"));
+ EnableVertexAttribArray = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glEnableVertexAttribArray"));
+ DisableVertexAttribArray = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glDisableVertexAttribArray"));
+ DetachShader = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glDetachShader"));
+ DeleteShader = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glDeleteShader"));
+ DeleteProgram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glDeleteProgram"));
+ CreateShader = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glCreateShader"));
+ CreateProgram = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glCreateProgram"));
+ CompileShader = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glCompileShader"));
+ BindAttribLocation = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , const GLchar *)>(context->getProcAddress("glBindAttribLocation"));
+ AttachShader = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glAttachShader"));
+ StencilMaskSeparate = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glStencilMaskSeparate"));
+ StencilFuncSeparate = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLuint )>(context->getProcAddress("glStencilFuncSeparate"));
+ StencilOpSeparate = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum )>(context->getProcAddress("glStencilOpSeparate"));
+ DrawBuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLenum *)>(context->getProcAddress("glDrawBuffers"));
+ BlendEquationSeparate = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix4x3fv"));
+ UniformMatrix3x4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix3x4fv"));
+ UniformMatrix4x2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix4x2fv"));
+ UniformMatrix2x4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix2x4fv"));
+ UniformMatrix3x2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix3x2fv"));
+ UniformMatrix2x3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(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<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsVertexArray"));
+ GenVertexArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenVertexArrays"));
+ DeleteVertexArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteVertexArrays"));
+ BindVertexArray = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glBindVertexArray"));
+ FlushMappedBufferRange = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLintptr , GLsizeiptr )>(context->getProcAddress("glFlushMappedBufferRange"));
+ MapBufferRange = reinterpret_cast<GLvoid* (QOPENGLF_APIENTRYP)(GLenum , GLintptr , GLsizeiptr , GLbitfield )>(context->getProcAddress("glMapBufferRange"));
+ FramebufferTextureLayer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glFramebufferTextureLayer"));
+ RenderbufferStorageMultisample = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glRenderbufferStorageMultisample"));
+ BlitFramebuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint , GLint , GLint , GLint , GLint , GLbitfield , GLenum )>(context->getProcAddress("glBlitFramebuffer"));
+ GenerateMipmap = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glGenerateMipmap"));
+ GetFramebufferAttachmentParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetFramebufferAttachmentParameteriv"));
+ FramebufferRenderbuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint )>(context->getProcAddress("glFramebufferRenderbuffer"));
+ FramebufferTexture3D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glFramebufferTexture3D"));
+ FramebufferTexture2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTexture2D"));
+ FramebufferTexture1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTexture1D"));
+ CheckFramebufferStatus = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glCheckFramebufferStatus"));
+ GenFramebuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenFramebuffers"));
+ DeleteFramebuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteFramebuffers"));
+ BindFramebuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindFramebuffer"));
+ IsFramebuffer = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsFramebuffer"));
+ GetRenderbufferParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetRenderbufferParameteriv"));
+ RenderbufferStorage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glRenderbufferStorage"));
+ GenRenderbuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenRenderbuffers"));
+ DeleteRenderbuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteRenderbuffers"));
+ BindRenderbuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindRenderbuffer"));
+ IsRenderbuffer = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsRenderbuffer"));
+ GetStringi = reinterpret_cast<const GLubyte * (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glGetStringi"));
+ ClearBufferfi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLfloat , GLint )>(context->getProcAddress("glClearBufferfi"));
+ ClearBufferfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLfloat *)>(context->getProcAddress("glClearBufferfv"));
+ ClearBufferuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLuint *)>(context->getProcAddress("glClearBufferuiv"));
+ ClearBufferiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLint *)>(context->getProcAddress("glClearBufferiv"));
+ GetTexParameterIuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint *)>(context->getProcAddress("glGetTexParameterIuiv"));
+ GetTexParameterIiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetTexParameterIiv"));
+ TexParameterIuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glTexParameterIuiv"));
+ TexParameterIiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glTexParameterIiv"));
+ Uniform4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint *)>(context->getProcAddress("glUniform4uiv"));
+ Uniform3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint *)>(context->getProcAddress("glUniform3uiv"));
+ Uniform2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint *)>(context->getProcAddress("glUniform2uiv"));
+ Uniform1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint *)>(context->getProcAddress("glUniform1uiv"));
+ Uniform4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glUniform4ui"));
+ Uniform3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint , GLuint , GLuint )>(context->getProcAddress("glUniform3ui"));
+ Uniform2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint , GLuint )>(context->getProcAddress("glUniform2ui"));
+ Uniform1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint )>(context->getProcAddress("glUniform1ui"));
+ GetFragDataLocation = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetFragDataLocation"));
+ BindFragDataLocation = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , const GLchar *)>(context->getProcAddress("glBindFragDataLocation"));
+ GetUniformuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint *)>(context->getProcAddress("glGetUniformuiv"));
+ GetVertexAttribIuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetVertexAttribIuiv"));
+ GetVertexAttribIiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVertexAttribIiv"));
+ VertexAttribIPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexAttribIPointer"));
+ EndConditionalRender = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndConditionalRender"));
+ BeginConditionalRender = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glBeginConditionalRender"));
+ ClampColor = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glClampColor"));
+ GetTransformFeedbackVarying = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLsizei *, GLenum *, GLchar *)>(context->getProcAddress("glGetTransformFeedbackVarying"));
+ TransformFeedbackVaryings = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLchar* const *, GLenum )>(context->getProcAddress("glTransformFeedbackVaryings"));
+ BindBufferBase = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint )>(context->getProcAddress("glBindBufferBase"));
+ BindBufferRange = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress("glBindBufferRange"));
+ EndTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndTransformFeedback"));
+ BeginTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glBeginTransformFeedback"));
+ IsEnabledi = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glIsEnabledi"));
+ Disablei = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glDisablei"));
+ Enablei = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glEnablei"));
+ GetIntegeri_v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLint *)>(context->getProcAddress("glGetIntegeri_v"));
+ GetBooleani_v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLboolean *)>(context->getProcAddress("glGetBooleani_v"));
+ ColorMaski = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLboolean , GLboolean , GLboolean , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLintptr , GLintptr , GLsizeiptr )>(context->getProcAddress("glCopyBufferSubData"));
+ UniformBlockBinding = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glUniformBlockBinding"));
+ GetActiveUniformBlockName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetActiveUniformBlockName"));
+ GetActiveUniformBlockiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetActiveUniformBlockiv"));
+ GetUniformBlockIndex = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetUniformBlockIndex"));
+ GetActiveUniformName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetActiveUniformName"));
+ GetActiveUniformsiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLuint *, GLenum , GLint *)>(context->getProcAddress("glGetActiveUniformsiv"));
+ GetUniformIndices = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLchar* const *, GLuint *)>(context->getProcAddress("glGetUniformIndices"));
+ PrimitiveRestartIndex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glPrimitiveRestartIndex"));
+ TexBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glTexBuffer"));
+ DrawElementsInstanced = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *, GLsizei )>(context->getProcAddress("glDrawElementsInstanced"));
+ DrawArraysInstanced = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLbitfield )>(context->getProcAddress("glSampleMaski"));
+ GetMultisamplefv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat *)>(context->getProcAddress("glGetMultisamplefv"));
+ TexImage3DMultisample = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTexImage3DMultisample"));
+ TexImage2DMultisample = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTexImage2DMultisample"));
+ GetSynciv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsync , GLenum , GLsizei , GLsizei *, GLint *)>(context->getProcAddress("glGetSynciv"));
+ GetInteger64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint64 *)>(context->getProcAddress("glGetInteger64v"));
+ WaitSync = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsync , GLbitfield , GLuint64 )>(context->getProcAddress("glWaitSync"));
+ ClientWaitSync = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLsync , GLbitfield , GLuint64 )>(context->getProcAddress("glClientWaitSync"));
+ DeleteSync = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsync )>(context->getProcAddress("glDeleteSync"));
+ IsSync = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLsync )>(context->getProcAddress("glIsSync"));
+ FenceSync = reinterpret_cast<GLsync (QOPENGLF_APIENTRYP)(GLenum , GLbitfield )>(context->getProcAddress("glFenceSync"));
+ ProvokingVertex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glProvokingVertex"));
+ MultiDrawElementsBaseVertex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLsizei *, GLenum , const GLvoid* const *, GLsizei , const GLint *)>(context->getProcAddress("glMultiDrawElementsBaseVertex"));
+ DrawElementsInstancedBaseVertex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *, GLsizei , GLint )>(context->getProcAddress("glDrawElementsInstancedBaseVertex"));
+ DrawRangeElementsBaseVertex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei , GLenum , const GLvoid *, GLint )>(context->getProcAddress("glDrawRangeElementsBaseVertex"));
+ DrawElementsBaseVertex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *, GLint )>(context->getProcAddress("glDrawElementsBaseVertex"));
+ FramebufferTexture = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTexture"));
+ GetBufferParameteri64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint64 *)>(context->getProcAddress("glGetBufferParameteri64v"));
+ GetInteger64i_v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLint64 *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , const GLuint *)>(context->getProcAddress("glVertexAttribP4uiv"));
+ VertexAttribP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribP4ui"));
+ VertexAttribP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , const GLuint *)>(context->getProcAddress("glVertexAttribP3uiv"));
+ VertexAttribP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribP3ui"));
+ VertexAttribP2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , const GLuint *)>(context->getProcAddress("glVertexAttribP2uiv"));
+ VertexAttribP2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribP2ui"));
+ VertexAttribP1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , const GLuint *)>(context->getProcAddress("glVertexAttribP1uiv"));
+ VertexAttribP1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribP1ui"));
+ SecondaryColorP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glSecondaryColorP3uiv"));
+ SecondaryColorP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glSecondaryColorP3ui"));
+ ColorP4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glColorP4uiv"));
+ ColorP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glColorP4ui"));
+ ColorP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glColorP3uiv"));
+ ColorP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glColorP3ui"));
+ NormalP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glNormalP3uiv"));
+ NormalP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glNormalP3ui"));
+ MultiTexCoordP4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexCoordP4uiv"));
+ MultiTexCoordP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexCoordP4ui"));
+ MultiTexCoordP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexCoordP3uiv"));
+ MultiTexCoordP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexCoordP3ui"));
+ MultiTexCoordP2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexCoordP2uiv"));
+ MultiTexCoordP2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexCoordP2ui"));
+ MultiTexCoordP1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexCoordP1uiv"));
+ MultiTexCoordP1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexCoordP1ui"));
+ TexCoordP4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glTexCoordP4uiv"));
+ TexCoordP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexCoordP4ui"));
+ TexCoordP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glTexCoordP3uiv"));
+ TexCoordP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexCoordP3ui"));
+ TexCoordP2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glTexCoordP2uiv"));
+ TexCoordP2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexCoordP2ui"));
+ TexCoordP1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glTexCoordP1uiv"));
+ TexCoordP1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexCoordP1ui"));
+ VertexP4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glVertexP4uiv"));
+ VertexP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glVertexP4ui"));
+ VertexP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glVertexP3uiv"));
+ VertexP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glVertexP3ui"));
+ VertexP2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glVertexP2uiv"));
+ VertexP2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glVertexP2ui"));
+ GetQueryObjectui64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64 *)>(context->getProcAddress("glGetQueryObjectui64v"));
+ GetQueryObjecti64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint64 *)>(context->getProcAddress("glGetQueryObjecti64v"));
+ QueryCounter = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glQueryCounter"));
+ GetSamplerParameterIuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetSamplerParameterIuiv"));
+ GetSamplerParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetSamplerParameterfv"));
+ GetSamplerParameterIiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetSamplerParameterIiv"));
+ GetSamplerParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetSamplerParameteriv"));
+ SamplerParameterIuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLuint *)>(context->getProcAddress("glSamplerParameterIuiv"));
+ SamplerParameterIiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLint *)>(context->getProcAddress("glSamplerParameterIiv"));
+ SamplerParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLfloat *)>(context->getProcAddress("glSamplerParameterfv"));
+ SamplerParameterf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat )>(context->getProcAddress("glSamplerParameterf"));
+ SamplerParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLint *)>(context->getProcAddress("glSamplerParameteriv"));
+ SamplerParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(context->getProcAddress("glSamplerParameteri"));
+ BindSampler = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glBindSampler"));
+ IsSampler = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsSampler"));
+ DeleteSamplers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteSamplers"));
+ GenSamplers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenSamplers"));
+ GetFragDataIndex = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetFragDataIndex"));
+ BindFragDataLocationIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , const GLchar *)>(context->getProcAddress("glBindFragDataLocationIndexed"));
+ VertexAttribDivisor = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetQueryIndexediv"));
+ EndQueryIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glEndQueryIndexed"));
+ BeginQueryIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint )>(context->getProcAddress("glBeginQueryIndexed"));
+ DrawTransformFeedbackStream = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint )>(context->getProcAddress("glDrawTransformFeedbackStream"));
+ DrawTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glDrawTransformFeedback"));
+ ResumeTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glResumeTransformFeedback"));
+ PauseTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPauseTransformFeedback"));
+ IsTransformFeedback = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsTransformFeedback"));
+ GenTransformFeedbacks = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenTransformFeedbacks"));
+ DeleteTransformFeedbacks = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteTransformFeedbacks"));
+ BindTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindTransformFeedback"));
+ PatchParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glPatchParameterfv"));
+ PatchParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glPatchParameteri"));
+ GetProgramStageiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetProgramStageiv"));
+ GetUniformSubroutineuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLuint *)>(context->getProcAddress("glGetUniformSubroutineuiv"));
+ UniformSubroutinesuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLuint *)>(context->getProcAddress("glUniformSubroutinesuiv"));
+ GetActiveSubroutineName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetActiveSubroutineName"));
+ GetActiveSubroutineUniformName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetActiveSubroutineUniformName"));
+ GetActiveSubroutineUniformiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetActiveSubroutineUniformiv"));
+ GetSubroutineIndex = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetSubroutineIndex"));
+ GetSubroutineUniformLocation = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetSubroutineUniformLocation"));
+ GetUniformdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble *)>(context->getProcAddress("glGetUniformdv"));
+ UniformMatrix4x3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix4x3dv"));
+ UniformMatrix4x2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix4x2dv"));
+ UniformMatrix3x4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix3x4dv"));
+ UniformMatrix3x2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix3x2dv"));
+ UniformMatrix2x4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix2x4dv"));
+ UniformMatrix2x3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix2x3dv"));
+ UniformMatrix4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix4dv"));
+ UniformMatrix3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix3dv"));
+ UniformMatrix2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix2dv"));
+ Uniform4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glUniform4dv"));
+ Uniform3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glUniform3dv"));
+ Uniform2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glUniform2dv"));
+ Uniform1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glUniform1dv"));
+ Uniform4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glUniform4d"));
+ Uniform3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glUniform3d"));
+ Uniform2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble )>(context->getProcAddress("glUniform2d"));
+ Uniform1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble )>(context->getProcAddress("glUniform1d"));
+ DrawElementsIndirect = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glDrawElementsIndirect"));
+ DrawArraysIndirect = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLvoid *)>(context->getProcAddress("glDrawArraysIndirect"));
+ BlendFuncSeparatei = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLenum , GLenum )>(context->getProcAddress("glBlendFuncSeparatei"));
+ BlendFunci = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum )>(context->getProcAddress("glBlendFunci"));
+ BlendEquationSeparatei = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum )>(context->getProcAddress("glBlendEquationSeparatei"));
+ BlendEquationi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glBlendEquationi"));
+ MinSampleShading = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLdouble *)>(context->getProcAddress("glGetDoublei_v"));
+ GetFloati_v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat *)>(context->getProcAddress("glGetFloati_v"));
+ DepthRangeIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble )>(context->getProcAddress("glDepthRangeIndexed"));
+ DepthRangeArrayv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLdouble *)>(context->getProcAddress("glDepthRangeArrayv"));
+ ScissorIndexedv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glScissorIndexedv"));
+ ScissorIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glScissorIndexed"));
+ ScissorArrayv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLint *)>(context->getProcAddress("glScissorArrayv"));
+ ViewportIndexedfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glViewportIndexedfv"));
+ ViewportIndexedf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glViewportIndexedf"));
+ ViewportArrayv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glViewportArrayv"));
+ GetVertexAttribLdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLdouble *)>(context->getProcAddress("glGetVertexAttribLdv"));
+ VertexAttribLPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexAttribLPointer"));
+ VertexAttribL4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL4dv"));
+ VertexAttribL3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL3dv"));
+ VertexAttribL2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL2dv"));
+ VertexAttribL1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL1dv"));
+ VertexAttribL4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL4d"));
+ VertexAttribL3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL3d"));
+ VertexAttribL2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL2d"));
+ VertexAttribL1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble )>(context->getProcAddress("glVertexAttribL1d"));
+ GetProgramPipelineInfoLog = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetProgramPipelineInfoLog"));
+ ValidateProgramPipeline = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glValidateProgramPipeline"));
+ ProgramUniformMatrix4x3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4x3dv"));
+ ProgramUniformMatrix3x4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3x4dv"));
+ ProgramUniformMatrix4x2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4x2dv"));
+ ProgramUniformMatrix2x4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2x4dv"));
+ ProgramUniformMatrix3x2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3x2dv"));
+ ProgramUniformMatrix2x3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2x3dv"));
+ ProgramUniformMatrix4x3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4x3fv"));
+ ProgramUniformMatrix3x4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3x4fv"));
+ ProgramUniformMatrix4x2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4x2fv"));
+ ProgramUniformMatrix2x4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2x4fv"));
+ ProgramUniformMatrix3x2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3x2fv"));
+ ProgramUniformMatrix2x3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2x3fv"));
+ ProgramUniformMatrix4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4dv"));
+ ProgramUniformMatrix3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3dv"));
+ ProgramUniformMatrix2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2dv"));
+ ProgramUniformMatrix4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4fv"));
+ ProgramUniformMatrix3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3fv"));
+ ProgramUniformMatrix2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2fv"));
+ ProgramUniform4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform4uiv"));
+ ProgramUniform4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform4ui"));
+ ProgramUniform4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform4dv"));
+ ProgramUniform4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform4d"));
+ ProgramUniform4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform4fv"));
+ ProgramUniform4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform4f"));
+ ProgramUniform4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform4iv"));
+ ProgramUniform4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform4i"));
+ ProgramUniform3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform3uiv"));
+ ProgramUniform3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform3ui"));
+ ProgramUniform3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform3dv"));
+ ProgramUniform3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform3d"));
+ ProgramUniform3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform3fv"));
+ ProgramUniform3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform3f"));
+ ProgramUniform3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform3iv"));
+ ProgramUniform3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform3i"));
+ ProgramUniform2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform2uiv"));
+ ProgramUniform2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform2ui"));
+ ProgramUniform2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform2dv"));
+ ProgramUniform2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform2d"));
+ ProgramUniform2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform2fv"));
+ ProgramUniform2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform2f"));
+ ProgramUniform2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform2iv"));
+ ProgramUniform2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform2i"));
+ ProgramUniform1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform1uiv"));
+ ProgramUniform1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint )>(context->getProcAddress("glProgramUniform1ui"));
+ ProgramUniform1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform1dv"));
+ ProgramUniform1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble )>(context->getProcAddress("glProgramUniform1d"));
+ ProgramUniform1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform1fv"));
+ ProgramUniform1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat )>(context->getProcAddress("glProgramUniform1f"));
+ ProgramUniform1iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform1iv"));
+ ProgramUniform1i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint )>(context->getProcAddress("glProgramUniform1i"));
+ GetProgramPipelineiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetProgramPipelineiv"));
+ IsProgramPipeline = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsProgramPipeline"));
+ GenProgramPipelines = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenProgramPipelines"));
+ DeleteProgramPipelines = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteProgramPipelines"));
+ BindProgramPipeline = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glBindProgramPipeline"));
+ CreateShaderProgramv = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLchar* const *)>(context->getProcAddress("glCreateShaderProgramv"));
+ ActiveShaderProgram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glActiveShaderProgram"));
+ UseProgramStages = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLbitfield , GLuint )>(context->getProcAddress("glUseProgramStages"));
+ ProgramParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(context->getProcAddress("glProgramParameteri"));
+ ProgramBinary = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLvoid *, GLsizei )>(context->getProcAddress("glProgramBinary"));
+ GetProgramBinary = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLenum *, GLvoid *)>(context->getProcAddress("glGetProgramBinary"));
+ ClearDepthf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glClearDepthf"));
+ DepthRangef = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glDepthRangef"));
+ GetShaderPrecisionFormat = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *, GLint *)>(context->getProcAddress("glGetShaderPrecisionFormat"));
+ ShaderBinary = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, GLenum , const GLvoid *, GLsizei )>(context->getProcAddress("glShaderBinary"));
+ ReleaseShaderCompiler = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress("glTexStorage3D"));
+ TexStorage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glTexStorage2D"));
+ TexStorage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei )>(context->getProcAddress("glTexStorage1D"));
+ MemoryBarrier = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glMemoryBarrier"));
+ BindImageTexture = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLint , GLboolean , GLint , GLenum , GLenum )>(context->getProcAddress("glBindImageTexture"));
+ GetActiveAtomicCounterBufferiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetActiveAtomicCounterBufferiv"));
+ GetInternalformativ = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , GLint *)>(context->getProcAddress("glGetInternalformativ"));
+ DrawTransformFeedbackStreamInstanced = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei )>(context->getProcAddress("glDrawTransformFeedbackStreamInstanced"));
+ DrawTransformFeedbackInstanced = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei )>(context->getProcAddress("glDrawTransformFeedbackInstanced"));
+ DrawElementsInstancedBaseVertexBaseInstance = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const void *, GLsizei , GLint , GLuint )>(context->getProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"));
+ DrawElementsInstancedBaseInstance = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const void *, GLsizei , GLuint )>(context->getProcAddress("glDrawElementsInstancedBaseInstance"));
+ DrawArraysInstancedBaseInstance = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei , GLsizei , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTexStorage3DMultisample"));
+ TexStorage2DMultisample = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTexStorage2DMultisample"));
+ TexBufferRange = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress("glTexBufferRange"));
+ ShaderStorageBlockBinding = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glShaderStorageBlockBinding"));
+ GetProgramResourceLocationIndex = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetProgramResourceLocationIndex"));
+ GetProgramResourceLocation = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetProgramResourceLocation"));
+ GetProgramResourceiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , const GLenum *, GLsizei , GLsizei *, GLint *)>(context->getProcAddress("glGetProgramResourceiv"));
+ GetProgramResourceName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetProgramResourceName"));
+ GetProgramResourceIndex = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetProgramResourceIndex"));
+ GetProgramInterfaceiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetProgramInterfaceiv"));
+ MultiDrawElementsIndirect = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const void *, GLsizei , GLsizei )>(context->getProcAddress("glMultiDrawElementsIndirect"));
+ MultiDrawArraysIndirect = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const void *, GLsizei , GLsizei )>(context->getProcAddress("glMultiDrawArraysIndirect"));
+ InvalidateSubFramebuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLenum *, GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glInvalidateSubFramebuffer"));
+ InvalidateFramebuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLenum *)>(context->getProcAddress("glInvalidateFramebuffer"));
+ InvalidateBufferData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glInvalidateBufferData"));
+ InvalidateBufferSubData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress("glInvalidateBufferSubData"));
+ InvalidateTexImage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint )>(context->getProcAddress("glInvalidateTexImage"));
+ InvalidateTexSubImage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei )>(context->getProcAddress("glInvalidateTexSubImage"));
+ GetInternalformati64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , GLint64 *)>(context->getProcAddress("glGetInternalformati64v"));
+ GetFramebufferParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetFramebufferParameteriv"));
+ FramebufferParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glFramebufferParameteri"));
+ VertexBindingDivisor = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glVertexBindingDivisor"));
+ VertexAttribBinding = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glVertexAttribBinding"));
+ VertexAttribLFormat = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLuint )>(context->getProcAddress("glVertexAttribLFormat"));
+ VertexAttribIFormat = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLuint )>(context->getProcAddress("glVertexAttribIFormat"));
+ VertexAttribFormat = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribFormat"));
+ BindVertexBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLintptr , GLsizei )>(context->getProcAddress("glBindVertexBuffer"));
+ TextureView = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLenum , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glTextureView"));
+ CopyImageSubData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei )>(context->getProcAddress("glCopyImageSubData"));
+ DispatchComputeIndirect = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLintptr )>(context->getProcAddress("glDispatchComputeIndirect"));
+ DispatchCompute = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glDispatchCompute"));
+ ClearBufferSubData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLintptr , GLsizeiptr , GLenum , GLenum , const void *)>(context->getProcAddress("glClearBufferSubData"));
+ ClearBufferData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum , const void *)>(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<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glTranslatef"));
+ Translated = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glTranslated"));
+ Scalef = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glScalef"));
+ Scaled = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glScaled"));
+ Rotatef = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glRotatef"));
+ Rotated = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glRotated"));
+ PushMatrix = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glPushMatrix"));
+ PopMatrix = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glPopMatrix"));
+ Ortho = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glOrtho"));
+ MultMatrixd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glMultMatrixd"));
+ MultMatrixf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glMultMatrixf"));
+ MatrixMode = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glMatrixMode"));
+ LoadMatrixd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glLoadMatrixd"));
+ LoadMatrixf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glLoadMatrixf"));
+ LoadIdentity = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glLoadIdentity"));
+ Frustum = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glFrustum"));
+ IsList = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(GetProcAddress(handle, "glIsList"));
+ GetTexGeniv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(GetProcAddress(handle, "glGetTexGeniv"));
+ GetTexGenfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(GetProcAddress(handle, "glGetTexGenfv"));
+ GetTexGendv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLdouble *)>(GetProcAddress(handle, "glGetTexGendv"));
+ GetTexEnviv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(GetProcAddress(handle, "glGetTexEnviv"));
+ GetTexEnvfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(GetProcAddress(handle, "glGetTexEnvfv"));
+ GetPolygonStipple = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte *)>(GetProcAddress(handle, "glGetPolygonStipple"));
+ GetPixelMapusv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLushort *)>(GetProcAddress(handle, "glGetPixelMapusv"));
+ GetPixelMapuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint *)>(GetProcAddress(handle, "glGetPixelMapuiv"));
+ GetPixelMapfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(GetProcAddress(handle, "glGetPixelMapfv"));
+ GetMaterialiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(GetProcAddress(handle, "glGetMaterialiv"));
+ GetMaterialfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(GetProcAddress(handle, "glGetMaterialfv"));
+ GetMapiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(GetProcAddress(handle, "glGetMapiv"));
+ GetMapfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(GetProcAddress(handle, "glGetMapfv"));
+ GetMapdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLdouble *)>(GetProcAddress(handle, "glGetMapdv"));
+ GetLightiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(GetProcAddress(handle, "glGetLightiv"));
+ GetLightfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(GetProcAddress(handle, "glGetLightfv"));
+ GetClipPlane = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble *)>(GetProcAddress(handle, "glGetClipPlane"));
+ DrawPixels = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(GetProcAddress(handle, "glDrawPixels"));
+ CopyPixels = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei , GLenum )>(GetProcAddress(handle, "glCopyPixels"));
+ PixelMapusv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLushort *)>(GetProcAddress(handle, "glPixelMapusv"));
+ PixelMapuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLuint *)>(GetProcAddress(handle, "glPixelMapuiv"));
+ PixelMapfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLfloat *)>(GetProcAddress(handle, "glPixelMapfv"));
+ PixelTransferi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(GetProcAddress(handle, "glPixelTransferi"));
+ PixelTransferf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(GetProcAddress(handle, "glPixelTransferf"));
+ PixelZoom = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(GetProcAddress(handle, "glPixelZoom"));
+ AlphaFunc = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(GetProcAddress(handle, "glAlphaFunc"));
+ EvalPoint2 = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(GetProcAddress(handle, "glEvalPoint2"));
+ EvalMesh2 = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint )>(GetProcAddress(handle, "glEvalMesh2"));
+ EvalPoint1 = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(GetProcAddress(handle, "glEvalPoint1"));
+ EvalMesh1 = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint )>(GetProcAddress(handle, "glEvalMesh1"));
+ EvalCoord2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glEvalCoord2fv"));
+ EvalCoord2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(GetProcAddress(handle, "glEvalCoord2f"));
+ EvalCoord2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glEvalCoord2dv"));
+ EvalCoord2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(GetProcAddress(handle, "glEvalCoord2d"));
+ EvalCoord1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glEvalCoord1fv"));
+ EvalCoord1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(GetProcAddress(handle, "glEvalCoord1f"));
+ EvalCoord1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glEvalCoord1dv"));
+ EvalCoord1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(GetProcAddress(handle, "glEvalCoord1d"));
+ MapGrid2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat , GLint , GLfloat , GLfloat )>(GetProcAddress(handle, "glMapGrid2f"));
+ MapGrid2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble , GLint , GLdouble , GLdouble )>(GetProcAddress(handle, "glMapGrid2d"));
+ MapGrid1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat )>(GetProcAddress(handle, "glMapGrid1f"));
+ MapGrid1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble )>(GetProcAddress(handle, "glMapGrid1d"));
+ Map2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLint , GLint , GLfloat , GLfloat , GLint , GLint , const GLfloat *)>(GetProcAddress(handle, "glMap2f"));
+ Map2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLint , GLint , GLdouble , GLdouble , GLint , GLint , const GLdouble *)>(GetProcAddress(handle, "glMap2d"));
+ Map1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLint , GLint , const GLfloat *)>(GetProcAddress(handle, "glMap1f"));
+ Map1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLint , GLint , const GLdouble *)>(GetProcAddress(handle, "glMap1d"));
+ PushAttrib = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(GetProcAddress(handle, "glPushAttrib"));
+ PopAttrib = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glPopAttrib"));
+ Accum = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(GetProcAddress(handle, "glAccum"));
+ IndexMask = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(GetProcAddress(handle, "glIndexMask"));
+ ClearIndex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(GetProcAddress(handle, "glClearIndex"));
+ ClearAccum = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glClearAccum"));
+ PushName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(GetProcAddress(handle, "glPushName"));
+ PopName = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glPopName"));
+ PassThrough = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(GetProcAddress(handle, "glPassThrough"));
+ LoadName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(GetProcAddress(handle, "glLoadName"));
+ InitNames = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glInitNames"));
+ RenderMode = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glRenderMode"));
+ SelectBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(GetProcAddress(handle, "glSelectBuffer"));
+ FeedbackBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLenum , GLfloat *)>(GetProcAddress(handle, "glFeedbackBuffer"));
+ TexGeniv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(GetProcAddress(handle, "glTexGeniv"));
+ TexGeni = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(GetProcAddress(handle, "glTexGeni"));
+ TexGenfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(GetProcAddress(handle, "glTexGenfv"));
+ TexGenf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(GetProcAddress(handle, "glTexGenf"));
+ TexGendv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLdouble *)>(GetProcAddress(handle, "glTexGendv"));
+ TexGend = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLdouble )>(GetProcAddress(handle, "glTexGend"));
+ TexEnviv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(GetProcAddress(handle, "glTexEnviv"));
+ TexEnvi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(GetProcAddress(handle, "glTexEnvi"));
+ TexEnvfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(GetProcAddress(handle, "glTexEnvfv"));
+ TexEnvf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(GetProcAddress(handle, "glTexEnvf"));
+ ShadeModel = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glShadeModel"));
+ PolygonStipple = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(GetProcAddress(handle, "glPolygonStipple"));
+ Materialiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(GetProcAddress(handle, "glMaterialiv"));
+ Materiali = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(GetProcAddress(handle, "glMateriali"));
+ Materialfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(GetProcAddress(handle, "glMaterialfv"));
+ Materialf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(GetProcAddress(handle, "glMaterialf"));
+ LineStipple = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLushort )>(GetProcAddress(handle, "glLineStipple"));
+ LightModeliv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(GetProcAddress(handle, "glLightModeliv"));
+ LightModeli = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(GetProcAddress(handle, "glLightModeli"));
+ LightModelfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(GetProcAddress(handle, "glLightModelfv"));
+ LightModelf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(GetProcAddress(handle, "glLightModelf"));
+ Lightiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(GetProcAddress(handle, "glLightiv"));
+ Lighti = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(GetProcAddress(handle, "glLighti"));
+ Lightfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(GetProcAddress(handle, "glLightfv"));
+ Lightf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(GetProcAddress(handle, "glLightf"));
+ Fogiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(GetProcAddress(handle, "glFogiv"));
+ Fogi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(GetProcAddress(handle, "glFogi"));
+ Fogfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(GetProcAddress(handle, "glFogfv"));
+ Fogf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(GetProcAddress(handle, "glFogf"));
+ ColorMaterial = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(GetProcAddress(handle, "glColorMaterial"));
+ ClipPlane = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(GetProcAddress(handle, "glClipPlane"));
+ Vertex4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glVertex4sv"));
+ Vertex4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glVertex4s"));
+ Vertex4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glVertex4iv"));
+ Vertex4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(GetProcAddress(handle, "glVertex4i"));
+ Vertex4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glVertex4fv"));
+ Vertex4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glVertex4f"));
+ Vertex4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glVertex4dv"));
+ Vertex4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glVertex4d"));
+ Vertex3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glVertex3sv"));
+ Vertex3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glVertex3s"));
+ Vertex3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glVertex3iv"));
+ Vertex3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(GetProcAddress(handle, "glVertex3i"));
+ Vertex3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glVertex3fv"));
+ Vertex3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glVertex3f"));
+ Vertex3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glVertex3dv"));
+ Vertex3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glVertex3d"));
+ Vertex2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glVertex2sv"));
+ Vertex2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(GetProcAddress(handle, "glVertex2s"));
+ Vertex2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glVertex2iv"));
+ Vertex2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(GetProcAddress(handle, "glVertex2i"));
+ Vertex2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glVertex2fv"));
+ Vertex2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(GetProcAddress(handle, "glVertex2f"));
+ Vertex2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glVertex2dv"));
+ Vertex2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(GetProcAddress(handle, "glVertex2d"));
+ TexCoord4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glTexCoord4sv"));
+ TexCoord4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glTexCoord4s"));
+ TexCoord4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glTexCoord4iv"));
+ TexCoord4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(GetProcAddress(handle, "glTexCoord4i"));
+ TexCoord4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glTexCoord4fv"));
+ TexCoord4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glTexCoord4f"));
+ TexCoord4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glTexCoord4dv"));
+ TexCoord4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glTexCoord4d"));
+ TexCoord3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glTexCoord3sv"));
+ TexCoord3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glTexCoord3s"));
+ TexCoord3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glTexCoord3iv"));
+ TexCoord3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(GetProcAddress(handle, "glTexCoord3i"));
+ TexCoord3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glTexCoord3fv"));
+ TexCoord3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glTexCoord3f"));
+ TexCoord3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glTexCoord3dv"));
+ TexCoord3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glTexCoord3d"));
+ TexCoord2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glTexCoord2sv"));
+ TexCoord2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(GetProcAddress(handle, "glTexCoord2s"));
+ TexCoord2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glTexCoord2iv"));
+ TexCoord2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(GetProcAddress(handle, "glTexCoord2i"));
+ TexCoord2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glTexCoord2fv"));
+ TexCoord2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(GetProcAddress(handle, "glTexCoord2f"));
+ TexCoord2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glTexCoord2dv"));
+ TexCoord2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(GetProcAddress(handle, "glTexCoord2d"));
+ TexCoord1sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glTexCoord1sv"));
+ TexCoord1s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort )>(GetProcAddress(handle, "glTexCoord1s"));
+ TexCoord1iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glTexCoord1iv"));
+ TexCoord1i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(GetProcAddress(handle, "glTexCoord1i"));
+ TexCoord1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glTexCoord1fv"));
+ TexCoord1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(GetProcAddress(handle, "glTexCoord1f"));
+ TexCoord1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glTexCoord1dv"));
+ TexCoord1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(GetProcAddress(handle, "glTexCoord1d"));
+ Rectsv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *, const GLshort *)>(GetProcAddress(handle, "glRectsv"));
+ Rects = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glRects"));
+ Rectiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *, const GLint *)>(GetProcAddress(handle, "glRectiv"));
+ Recti = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(GetProcAddress(handle, "glRecti"));
+ Rectfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *)>(GetProcAddress(handle, "glRectfv"));
+ Rectf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glRectf"));
+ Rectdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *, const GLdouble *)>(GetProcAddress(handle, "glRectdv"));
+ Rectd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glRectd"));
+ RasterPos4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glRasterPos4sv"));
+ RasterPos4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glRasterPos4s"));
+ RasterPos4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glRasterPos4iv"));
+ RasterPos4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(GetProcAddress(handle, "glRasterPos4i"));
+ RasterPos4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glRasterPos4fv"));
+ RasterPos4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glRasterPos4f"));
+ RasterPos4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glRasterPos4dv"));
+ RasterPos4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glRasterPos4d"));
+ RasterPos3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glRasterPos3sv"));
+ RasterPos3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glRasterPos3s"));
+ RasterPos3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glRasterPos3iv"));
+ RasterPos3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(GetProcAddress(handle, "glRasterPos3i"));
+ RasterPos3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glRasterPos3fv"));
+ RasterPos3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glRasterPos3f"));
+ RasterPos3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glRasterPos3dv"));
+ RasterPos3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glRasterPos3d"));
+ RasterPos2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glRasterPos2sv"));
+ RasterPos2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(GetProcAddress(handle, "glRasterPos2s"));
+ RasterPos2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glRasterPos2iv"));
+ RasterPos2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(GetProcAddress(handle, "glRasterPos2i"));
+ RasterPos2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glRasterPos2fv"));
+ RasterPos2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(GetProcAddress(handle, "glRasterPos2f"));
+ RasterPos2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glRasterPos2dv"));
+ RasterPos2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(GetProcAddress(handle, "glRasterPos2d"));
+ Normal3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glNormal3sv"));
+ Normal3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glNormal3s"));
+ Normal3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glNormal3iv"));
+ Normal3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(GetProcAddress(handle, "glNormal3i"));
+ Normal3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glNormal3fv"));
+ Normal3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glNormal3f"));
+ Normal3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glNormal3dv"));
+ Normal3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glNormal3d"));
+ Normal3bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(GetProcAddress(handle, "glNormal3bv"));
+ Normal3b = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte )>(GetProcAddress(handle, "glNormal3b"));
+ Indexsv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glIndexsv"));
+ Indexs = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort )>(GetProcAddress(handle, "glIndexs"));
+ Indexiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glIndexiv"));
+ Indexi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(GetProcAddress(handle, "glIndexi"));
+ Indexfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glIndexfv"));
+ Indexf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(GetProcAddress(handle, "glIndexf"));
+ Indexdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glIndexdv"));
+ Indexd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(GetProcAddress(handle, "glIndexd"));
+ End = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glEnd"));
+ EdgeFlagv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLboolean *)>(GetProcAddress(handle, "glEdgeFlagv"));
+ EdgeFlag = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLboolean )>(GetProcAddress(handle, "glEdgeFlag"));
+ Color4usv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLushort *)>(GetProcAddress(handle, "glColor4usv"));
+ Color4us = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLushort , GLushort , GLushort , GLushort )>(GetProcAddress(handle, "glColor4us"));
+ Color4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *)>(GetProcAddress(handle, "glColor4uiv"));
+ Color4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLuint )>(GetProcAddress(handle, "glColor4ui"));
+ Color4ubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(GetProcAddress(handle, "glColor4ubv"));
+ Color4ub = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte , GLubyte , GLubyte , GLubyte )>(GetProcAddress(handle, "glColor4ub"));
+ Color4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glColor4sv"));
+ Color4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glColor4s"));
+ Color4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glColor4iv"));
+ Color4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(GetProcAddress(handle, "glColor4i"));
+ Color4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glColor4fv"));
+ Color4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glColor4f"));
+ Color4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glColor4dv"));
+ Color4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glColor4d"));
+ Color4bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(GetProcAddress(handle, "glColor4bv"));
+ Color4b = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte , GLbyte )>(GetProcAddress(handle, "glColor4b"));
+ Color3usv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLushort *)>(GetProcAddress(handle, "glColor3usv"));
+ Color3us = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLushort , GLushort , GLushort )>(GetProcAddress(handle, "glColor3us"));
+ Color3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *)>(GetProcAddress(handle, "glColor3uiv"));
+ Color3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(GetProcAddress(handle, "glColor3ui"));
+ Color3ubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(GetProcAddress(handle, "glColor3ubv"));
+ Color3ub = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte , GLubyte , GLubyte )>(GetProcAddress(handle, "glColor3ub"));
+ Color3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(GetProcAddress(handle, "glColor3sv"));
+ Color3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(GetProcAddress(handle, "glColor3s"));
+ Color3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(GetProcAddress(handle, "glColor3iv"));
+ Color3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(GetProcAddress(handle, "glColor3i"));
+ Color3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(GetProcAddress(handle, "glColor3fv"));
+ Color3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(GetProcAddress(handle, "glColor3f"));
+ Color3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(GetProcAddress(handle, "glColor3dv"));
+ Color3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(GetProcAddress(handle, "glColor3d"));
+ Color3bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(GetProcAddress(handle, "glColor3bv"));
+ Color3b = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte )>(GetProcAddress(handle, "glColor3b"));
+ Bitmap = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLsizei , GLfloat , GLfloat , GLfloat , GLfloat , const GLubyte *)>(GetProcAddress(handle, "glBitmap"));
+ Begin = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glBegin"));
+ ListBase = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(GetProcAddress(handle, "glListBase"));
+ GenLists = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLsizei )>(GetProcAddress(handle, "glGenLists"));
+ DeleteLists = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei )>(GetProcAddress(handle, "glDeleteLists"));
+ CallLists = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLenum , const GLvoid *)>(GetProcAddress(handle, "glCallLists"));
+ CallList = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(GetProcAddress(handle, "glCallList"));
+ EndList = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glEndList"));
+ NewList = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(GetProcAddress(handle, "glNewList"));
+#else
+ Translatef = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTranslatef"));
+ Translated = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glTranslated"));
+ Scalef = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glScalef"));
+ Scaled = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glScaled"));
+ Rotatef = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glRotatef"));
+ Rotated = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glRotated"));
+ PushMatrix = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPushMatrix"));
+ PopMatrix = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPopMatrix"));
+ Ortho = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glOrtho"));
+ MultMatrixd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glMultMatrixd"));
+ MultMatrixf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glMultMatrixf"));
+ MatrixMode = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glMatrixMode"));
+ LoadMatrixd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glLoadMatrixd"));
+ LoadMatrixf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glLoadMatrixf"));
+ LoadIdentity = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glLoadIdentity"));
+ Frustum = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glFrustum"));
+ IsList = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsList"));
+ GetTexGeniv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetTexGeniv"));
+ GetTexGenfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetTexGenfv"));
+ GetTexGendv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLdouble *)>(context->getProcAddress("glGetTexGendv"));
+ GetTexEnviv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetTexEnviv"));
+ GetTexEnvfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetTexEnvfv"));
+ GetPolygonStipple = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte *)>(context->getProcAddress("glGetPolygonStipple"));
+ GetPixelMapusv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLushort *)>(context->getProcAddress("glGetPixelMapusv"));
+ GetPixelMapuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint *)>(context->getProcAddress("glGetPixelMapuiv"));
+ GetPixelMapfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(context->getProcAddress("glGetPixelMapfv"));
+ GetMaterialiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMaterialiv"));
+ GetMaterialfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetMaterialfv"));
+ GetMapiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMapiv"));
+ GetMapfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetMapfv"));
+ GetMapdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLdouble *)>(context->getProcAddress("glGetMapdv"));
+ GetLightiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetLightiv"));
+ GetLightfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetLightfv"));
+ GetClipPlane = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble *)>(context->getProcAddress("glGetClipPlane"));
+ DrawPixels = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glDrawPixels"));
+ CopyPixels = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei , GLenum )>(context->getProcAddress("glCopyPixels"));
+ PixelMapusv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLushort *)>(context->getProcAddress("glPixelMapusv"));
+ PixelMapuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLuint *)>(context->getProcAddress("glPixelMapuiv"));
+ PixelMapfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLfloat *)>(context->getProcAddress("glPixelMapfv"));
+ PixelTransferi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glPixelTransferi"));
+ PixelTransferf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glPixelTransferf"));
+ PixelZoom = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glPixelZoom"));
+ AlphaFunc = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glAlphaFunc"));
+ EvalPoint2 = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glEvalPoint2"));
+ EvalMesh2 = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint )>(context->getProcAddress("glEvalMesh2"));
+ EvalPoint1 = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(context->getProcAddress("glEvalPoint1"));
+ EvalMesh1 = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint )>(context->getProcAddress("glEvalMesh1"));
+ EvalCoord2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glEvalCoord2fv"));
+ EvalCoord2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glEvalCoord2f"));
+ EvalCoord2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glEvalCoord2dv"));
+ EvalCoord2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(context->getProcAddress("glEvalCoord2d"));
+ EvalCoord1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glEvalCoord1fv"));
+ EvalCoord1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glEvalCoord1f"));
+ EvalCoord1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glEvalCoord1dv"));
+ EvalCoord1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(context->getProcAddress("glEvalCoord1d"));
+ MapGrid2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat , GLint , GLfloat , GLfloat )>(context->getProcAddress("glMapGrid2f"));
+ MapGrid2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble , GLint , GLdouble , GLdouble )>(context->getProcAddress("glMapGrid2d"));
+ MapGrid1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat )>(context->getProcAddress("glMapGrid1f"));
+ MapGrid1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble )>(context->getProcAddress("glMapGrid1d"));
+ Map2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLint , GLint , GLfloat , GLfloat , GLint , GLint , const GLfloat *)>(context->getProcAddress("glMap2f"));
+ Map2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLint , GLint , GLdouble , GLdouble , GLint , GLint , const GLdouble *)>(context->getProcAddress("glMap2d"));
+ Map1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLint , GLint , const GLfloat *)>(context->getProcAddress("glMap1f"));
+ Map1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLint , GLint , const GLdouble *)>(context->getProcAddress("glMap1d"));
+ PushAttrib = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glPushAttrib"));
+ PopAttrib = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPopAttrib"));
+ Accum = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glAccum"));
+ IndexMask = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIndexMask"));
+ ClearIndex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glClearIndex"));
+ ClearAccum = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glClearAccum"));
+ PushName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glPushName"));
+ PopName = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPopName"));
+ PassThrough = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glPassThrough"));
+ LoadName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glLoadName"));
+ InitNames = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glInitNames"));
+ RenderMode = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glRenderMode"));
+ SelectBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glSelectBuffer"));
+ FeedbackBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLenum , GLfloat *)>(context->getProcAddress("glFeedbackBuffer"));
+ TexGeniv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glTexGeniv"));
+ TexGeni = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glTexGeni"));
+ TexGenfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glTexGenfv"));
+ TexGenf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glTexGenf"));
+ TexGendv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLdouble *)>(context->getProcAddress("glTexGendv"));
+ TexGend = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLdouble )>(context->getProcAddress("glTexGend"));
+ TexEnviv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glTexEnviv"));
+ TexEnvi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glTexEnvi"));
+ TexEnvfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glTexEnvfv"));
+ TexEnvf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glTexEnvf"));
+ ShadeModel = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glShadeModel"));
+ PolygonStipple = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(context->getProcAddress("glPolygonStipple"));
+ Materialiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glMaterialiv"));
+ Materiali = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glMateriali"));
+ Materialfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glMaterialfv"));
+ Materialf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glMaterialf"));
+ LineStipple = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLushort )>(context->getProcAddress("glLineStipple"));
+ LightModeliv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glLightModeliv"));
+ LightModeli = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glLightModeli"));
+ LightModelfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glLightModelfv"));
+ LightModelf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glLightModelf"));
+ Lightiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glLightiv"));
+ Lighti = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glLighti"));
+ Lightfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glLightfv"));
+ Lightf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glLightf"));
+ Fogiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glFogiv"));
+ Fogi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glFogi"));
+ Fogfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glFogfv"));
+ Fogf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glFogf"));
+ ColorMaterial = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glColorMaterial"));
+ ClipPlane = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glClipPlane"));
+ Vertex4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glVertex4sv"));
+ Vertex4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertex4s"));
+ Vertex4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glVertex4iv"));
+ Vertex4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glVertex4i"));
+ Vertex4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glVertex4fv"));
+ Vertex4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertex4f"));
+ Vertex4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glVertex4dv"));
+ Vertex4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertex4d"));
+ Vertex3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glVertex3sv"));
+ Vertex3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glVertex3s"));
+ Vertex3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glVertex3iv"));
+ Vertex3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glVertex3i"));
+ Vertex3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glVertex3fv"));
+ Vertex3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertex3f"));
+ Vertex3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glVertex3dv"));
+ Vertex3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertex3d"));
+ Vertex2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glVertex2sv"));
+ Vertex2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(context->getProcAddress("glVertex2s"));
+ Vertex2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glVertex2iv"));
+ Vertex2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glVertex2i"));
+ Vertex2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glVertex2fv"));
+ Vertex2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glVertex2f"));
+ Vertex2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glVertex2dv"));
+ Vertex2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(context->getProcAddress("glVertex2d"));
+ TexCoord4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glTexCoord4sv"));
+ TexCoord4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glTexCoord4s"));
+ TexCoord4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glTexCoord4iv"));
+ TexCoord4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glTexCoord4i"));
+ TexCoord4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glTexCoord4fv"));
+ TexCoord4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord4f"));
+ TexCoord4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glTexCoord4dv"));
+ TexCoord4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glTexCoord4d"));
+ TexCoord3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glTexCoord3sv"));
+ TexCoord3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glTexCoord3s"));
+ TexCoord3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glTexCoord3iv"));
+ TexCoord3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glTexCoord3i"));
+ TexCoord3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glTexCoord3fv"));
+ TexCoord3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord3f"));
+ TexCoord3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glTexCoord3dv"));
+ TexCoord3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glTexCoord3d"));
+ TexCoord2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glTexCoord2sv"));
+ TexCoord2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(context->getProcAddress("glTexCoord2s"));
+ TexCoord2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glTexCoord2iv"));
+ TexCoord2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glTexCoord2i"));
+ TexCoord2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glTexCoord2fv"));
+ TexCoord2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glTexCoord2f"));
+ TexCoord2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glTexCoord2dv"));
+ TexCoord2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(context->getProcAddress("glTexCoord2d"));
+ TexCoord1sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glTexCoord1sv"));
+ TexCoord1s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort )>(context->getProcAddress("glTexCoord1s"));
+ TexCoord1iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glTexCoord1iv"));
+ TexCoord1i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(context->getProcAddress("glTexCoord1i"));
+ TexCoord1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glTexCoord1fv"));
+ TexCoord1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glTexCoord1f"));
+ TexCoord1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glTexCoord1dv"));
+ TexCoord1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(context->getProcAddress("glTexCoord1d"));
+ Rectsv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *, const GLshort *)>(context->getProcAddress("glRectsv"));
+ Rects = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glRects"));
+ Rectiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *, const GLint *)>(context->getProcAddress("glRectiv"));
+ Recti = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glRecti"));
+ Rectfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *)>(context->getProcAddress("glRectfv"));
+ Rectf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glRectf"));
+ Rectdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *, const GLdouble *)>(context->getProcAddress("glRectdv"));
+ Rectd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glRectd"));
+ RasterPos4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glRasterPos4sv"));
+ RasterPos4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glRasterPos4s"));
+ RasterPos4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glRasterPos4iv"));
+ RasterPos4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glRasterPos4i"));
+ RasterPos4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glRasterPos4fv"));
+ RasterPos4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glRasterPos4f"));
+ RasterPos4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glRasterPos4dv"));
+ RasterPos4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glRasterPos4d"));
+ RasterPos3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glRasterPos3sv"));
+ RasterPos3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glRasterPos3s"));
+ RasterPos3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glRasterPos3iv"));
+ RasterPos3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glRasterPos3i"));
+ RasterPos3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glRasterPos3fv"));
+ RasterPos3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glRasterPos3f"));
+ RasterPos3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glRasterPos3dv"));
+ RasterPos3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glRasterPos3d"));
+ RasterPos2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glRasterPos2sv"));
+ RasterPos2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(context->getProcAddress("glRasterPos2s"));
+ RasterPos2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glRasterPos2iv"));
+ RasterPos2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glRasterPos2i"));
+ RasterPos2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glRasterPos2fv"));
+ RasterPos2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glRasterPos2f"));
+ RasterPos2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glRasterPos2dv"));
+ RasterPos2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(context->getProcAddress("glRasterPos2d"));
+ Normal3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glNormal3sv"));
+ Normal3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glNormal3s"));
+ Normal3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glNormal3iv"));
+ Normal3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glNormal3i"));
+ Normal3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glNormal3fv"));
+ Normal3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glNormal3f"));
+ Normal3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glNormal3dv"));
+ Normal3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glNormal3d"));
+ Normal3bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(context->getProcAddress("glNormal3bv"));
+ Normal3b = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte )>(context->getProcAddress("glNormal3b"));
+ Indexsv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glIndexsv"));
+ Indexs = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort )>(context->getProcAddress("glIndexs"));
+ Indexiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glIndexiv"));
+ Indexi = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(context->getProcAddress("glIndexi"));
+ Indexfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glIndexfv"));
+ Indexf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glIndexf"));
+ Indexdv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glIndexdv"));
+ Indexd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(context->getProcAddress("glIndexd"));
+ End = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEnd"));
+ EdgeFlagv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLboolean *)>(context->getProcAddress("glEdgeFlagv"));
+ EdgeFlag = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLboolean )>(context->getProcAddress("glEdgeFlag"));
+ Color4usv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLushort *)>(context->getProcAddress("glColor4usv"));
+ Color4us = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLushort , GLushort , GLushort , GLushort )>(context->getProcAddress("glColor4us"));
+ Color4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *)>(context->getProcAddress("glColor4uiv"));
+ Color4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glColor4ui"));
+ Color4ubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(context->getProcAddress("glColor4ubv"));
+ Color4ub = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte , GLubyte , GLubyte , GLubyte )>(context->getProcAddress("glColor4ub"));
+ Color4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glColor4sv"));
+ Color4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glColor4s"));
+ Color4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glColor4iv"));
+ Color4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glColor4i"));
+ Color4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glColor4fv"));
+ Color4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glColor4f"));
+ Color4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glColor4dv"));
+ Color4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glColor4d"));
+ Color4bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(context->getProcAddress("glColor4bv"));
+ Color4b = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte , GLbyte )>(context->getProcAddress("glColor4b"));
+ Color3usv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLushort *)>(context->getProcAddress("glColor3usv"));
+ Color3us = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLushort , GLushort , GLushort )>(context->getProcAddress("glColor3us"));
+ Color3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *)>(context->getProcAddress("glColor3uiv"));
+ Color3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glColor3ui"));
+ Color3ubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(context->getProcAddress("glColor3ubv"));
+ Color3ub = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte , GLubyte , GLubyte )>(context->getProcAddress("glColor3ub"));
+ Color3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glColor3sv"));
+ Color3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glColor3s"));
+ Color3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glColor3iv"));
+ Color3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glColor3i"));
+ Color3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glColor3fv"));
+ Color3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glColor3f"));
+ Color3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glColor3dv"));
+ Color3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glColor3d"));
+ Color3bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(context->getProcAddress("glColor3bv"));
+ Color3b = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte )>(context->getProcAddress("glColor3b"));
+ Bitmap = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLsizei , GLfloat , GLfloat , GLfloat , GLfloat , const GLubyte *)>(context->getProcAddress("glBitmap"));
+ Begin = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glBegin"));
+ ListBase = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glListBase"));
+ GenLists = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLsizei )>(context->getProcAddress("glGenLists"));
+ DeleteLists = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei )>(context->getProcAddress("glDeleteLists"));
+ CallLists = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLenum , const GLvoid *)>(context->getProcAddress("glCallLists"));
+ CallList = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glCallList"));
+ EndList = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndList"));
+ NewList = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLbitfield )>(GetProcAddress(handle, "glPushClientAttrib"));
+ PopClientAttrib = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(GetProcAddress(handle, "glPopClientAttrib"));
+ PrioritizeTextures = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, const GLfloat *)>(GetProcAddress(handle, "glPrioritizeTextures"));
+ AreTexturesResident = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, GLboolean *)>(GetProcAddress(handle, "glAreTexturesResident"));
+ VertexPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(GetProcAddress(handle, "glVertexPointer"));
+ TexCoordPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(GetProcAddress(handle, "glTexCoordPointer"));
+ NormalPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(GetProcAddress(handle, "glNormalPointer"));
+ InterleavedArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(GetProcAddress(handle, "glInterleavedArrays"));
+ IndexPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(GetProcAddress(handle, "glIndexPointer"));
+ EnableClientState = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glEnableClientState"));
+ EdgeFlagPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLvoid *)>(GetProcAddress(handle, "glEdgeFlagPointer"));
+ DisableClientState = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(GetProcAddress(handle, "glDisableClientState"));
+ ColorPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(GetProcAddress(handle, "glColorPointer"));
+ ArrayElement = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(GetProcAddress(handle, "glArrayElement"));
+#else
+ PushClientAttrib = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glPushClientAttrib"));
+ PopClientAttrib = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPopClientAttrib"));
+ PrioritizeTextures = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, const GLfloat *)>(context->getProcAddress("glPrioritizeTextures"));
+ AreTexturesResident = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, GLboolean *)>(context->getProcAddress("glAreTexturesResident"));
+ VertexPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexPointer"));
+ TexCoordPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glTexCoordPointer"));
+ NormalPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glNormalPointer"));
+ InterleavedArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glInterleavedArrays"));
+ IndexPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glIndexPointer"));
+ EnableClientState = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glEnableClientState"));
+ EdgeFlagPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLvoid *)>(context->getProcAddress("glEdgeFlagPointer"));
+ DisableClientState = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glDisableClientState"));
+ ColorPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glColorPointer"));
+ ArrayElement = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glResetMinmax"));
+ ResetHistogram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glResetHistogram"));
+ Minmax = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLboolean )>(context->getProcAddress("glMinmax"));
+ Histogram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLboolean )>(context->getProcAddress("glHistogram"));
+ GetMinmaxParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMinmaxParameteriv"));
+ GetMinmaxParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetMinmaxParameterfv"));
+ GetMinmax = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLboolean , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetMinmax"));
+ GetHistogramParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetHistogramParameteriv"));
+ GetHistogramParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetHistogramParameterfv"));
+ GetHistogram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLboolean , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetHistogram"));
+ SeparableFilter2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *, const GLvoid *)>(context->getProcAddress("glSeparableFilter2D"));
+ GetSeparableFilter = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLvoid *, GLvoid *, GLvoid *)>(context->getProcAddress("glGetSeparableFilter"));
+ GetConvolutionParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetConvolutionParameteriv"));
+ GetConvolutionParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetConvolutionParameterfv"));
+ GetConvolutionFilter = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetConvolutionFilter"));
+ CopyConvolutionFilter2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyConvolutionFilter2D"));
+ CopyConvolutionFilter1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyConvolutionFilter1D"));
+ ConvolutionParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glConvolutionParameteriv"));
+ ConvolutionParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glConvolutionParameteri"));
+ ConvolutionParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glConvolutionParameterfv"));
+ ConvolutionParameterf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glConvolutionParameterf"));
+ ConvolutionFilter2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glConvolutionFilter2D"));
+ ConvolutionFilter1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glConvolutionFilter1D"));
+ CopyColorSubTable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyColorSubTable"));
+ ColorSubTable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glColorSubTable"));
+ GetColorTableParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetColorTableParameteriv"));
+ GetColorTableParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetColorTableParameterfv"));
+ GetColorTable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetColorTable"));
+ CopyColorTable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyColorTable"));
+ ColorTableParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glColorTableParameteriv"));
+ ColorTableParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glColorTableParameterfv"));
+ ColorTable = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glColorTable"));
+ TexImage3D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glMultTransposeMatrixd"));
+ MultTransposeMatrixf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glMultTransposeMatrixf"));
+ LoadTransposeMatrixd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glLoadTransposeMatrixd"));
+ LoadTransposeMatrixf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glLoadTransposeMatrixf"));
+ MultiTexCoord4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glMultiTexCoord4sv"));
+ MultiTexCoord4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glMultiTexCoord4s"));
+ MultiTexCoord4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glMultiTexCoord4iv"));
+ MultiTexCoord4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint )>(context->getProcAddress("glMultiTexCoord4i"));
+ MultiTexCoord4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexCoord4fv"));
+ MultiTexCoord4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glMultiTexCoord4f"));
+ MultiTexCoord4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexCoord4dv"));
+ MultiTexCoord4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMultiTexCoord4d"));
+ MultiTexCoord3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glMultiTexCoord3sv"));
+ MultiTexCoord3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort , GLshort )>(context->getProcAddress("glMultiTexCoord3s"));
+ MultiTexCoord3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glMultiTexCoord3iv"));
+ MultiTexCoord3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint )>(context->getProcAddress("glMultiTexCoord3i"));
+ MultiTexCoord3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexCoord3fv"));
+ MultiTexCoord3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glMultiTexCoord3f"));
+ MultiTexCoord3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexCoord3dv"));
+ MultiTexCoord3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMultiTexCoord3d"));
+ MultiTexCoord2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glMultiTexCoord2sv"));
+ MultiTexCoord2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort )>(context->getProcAddress("glMultiTexCoord2s"));
+ MultiTexCoord2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glMultiTexCoord2iv"));
+ MultiTexCoord2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint )>(context->getProcAddress("glMultiTexCoord2i"));
+ MultiTexCoord2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexCoord2fv"));
+ MultiTexCoord2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat )>(context->getProcAddress("glMultiTexCoord2f"));
+ MultiTexCoord2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexCoord2dv"));
+ MultiTexCoord2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble )>(context->getProcAddress("glMultiTexCoord2d"));
+ MultiTexCoord1sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glMultiTexCoord1sv"));
+ MultiTexCoord1s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort )>(context->getProcAddress("glMultiTexCoord1s"));
+ MultiTexCoord1iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glMultiTexCoord1iv"));
+ MultiTexCoord1i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glMultiTexCoord1i"));
+ MultiTexCoord1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexCoord1fv"));
+ MultiTexCoord1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glMultiTexCoord1f"));
+ MultiTexCoord1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexCoord1dv"));
+ MultiTexCoord1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble )>(context->getProcAddress("glMultiTexCoord1d"));
+ ClientActiveTexture = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glWindowPos3sv"));
+ WindowPos3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glWindowPos3s"));
+ WindowPos3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glWindowPos3iv"));
+ WindowPos3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glWindowPos3i"));
+ WindowPos3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glWindowPos3fv"));
+ WindowPos3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glWindowPos3f"));
+ WindowPos3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glWindowPos3dv"));
+ WindowPos3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glWindowPos3d"));
+ WindowPos2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glWindowPos2sv"));
+ WindowPos2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(context->getProcAddress("glWindowPos2s"));
+ WindowPos2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glWindowPos2iv"));
+ WindowPos2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glWindowPos2i"));
+ WindowPos2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glWindowPos2fv"));
+ WindowPos2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glWindowPos2f"));
+ WindowPos2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glWindowPos2dv"));
+ WindowPos2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(context->getProcAddress("glWindowPos2d"));
+ SecondaryColorPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glSecondaryColorPointer"));
+ SecondaryColor3usv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLushort *)>(context->getProcAddress("glSecondaryColor3usv"));
+ SecondaryColor3us = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLushort , GLushort , GLushort )>(context->getProcAddress("glSecondaryColor3us"));
+ SecondaryColor3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *)>(context->getProcAddress("glSecondaryColor3uiv"));
+ SecondaryColor3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glSecondaryColor3ui"));
+ SecondaryColor3ubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(context->getProcAddress("glSecondaryColor3ubv"));
+ SecondaryColor3ub = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte , GLubyte , GLubyte )>(context->getProcAddress("glSecondaryColor3ub"));
+ SecondaryColor3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glSecondaryColor3sv"));
+ SecondaryColor3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glSecondaryColor3s"));
+ SecondaryColor3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glSecondaryColor3iv"));
+ SecondaryColor3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glSecondaryColor3i"));
+ SecondaryColor3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glSecondaryColor3fv"));
+ SecondaryColor3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glSecondaryColor3f"));
+ SecondaryColor3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glSecondaryColor3dv"));
+ SecondaryColor3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glSecondaryColor3d"));
+ SecondaryColor3bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(context->getProcAddress("glSecondaryColor3bv"));
+ SecondaryColor3b = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte )>(context->getProcAddress("glSecondaryColor3b"));
+ FogCoordPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glFogCoordPointer"));
+ FogCoorddv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glFogCoorddv"));
+ FogCoordd = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(context->getProcAddress("glFogCoordd"));
+ FogCoordfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glFogCoordfv"));
+ FogCoordf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLuint , const GLushort *)>(context->getProcAddress("glVertexAttrib4usv"));
+ VertexAttrib4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttrib4uiv"));
+ VertexAttrib4ubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLubyte *)>(context->getProcAddress("glVertexAttrib4ubv"));
+ VertexAttrib4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib4sv"));
+ VertexAttrib4s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib4s"));
+ VertexAttrib4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttrib4iv"));
+ VertexAttrib4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib4fv"));
+ VertexAttrib4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib4f"));
+ VertexAttrib4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib4dv"));
+ VertexAttrib4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib4d"));
+ VertexAttrib4bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLbyte *)>(context->getProcAddress("glVertexAttrib4bv"));
+ VertexAttrib4Nusv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLushort *)>(context->getProcAddress("glVertexAttrib4Nusv"));
+ VertexAttrib4Nuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttrib4Nuiv"));
+ VertexAttrib4Nubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLubyte *)>(context->getProcAddress("glVertexAttrib4Nubv"));
+ VertexAttrib4Nub = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLubyte , GLubyte , GLubyte , GLubyte )>(context->getProcAddress("glVertexAttrib4Nub"));
+ VertexAttrib4Nsv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib4Nsv"));
+ VertexAttrib4Niv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttrib4Niv"));
+ VertexAttrib4Nbv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLbyte *)>(context->getProcAddress("glVertexAttrib4Nbv"));
+ VertexAttrib3sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib3sv"));
+ VertexAttrib3s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib3s"));
+ VertexAttrib3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib3fv"));
+ VertexAttrib3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib3f"));
+ VertexAttrib3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib3dv"));
+ VertexAttrib3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib3d"));
+ VertexAttrib2sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib2sv"));
+ VertexAttrib2s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib2s"));
+ VertexAttrib2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib2fv"));
+ VertexAttrib2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib2f"));
+ VertexAttrib2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib2dv"));
+ VertexAttrib2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib2d"));
+ VertexAttrib1sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib1sv"));
+ VertexAttrib1s = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort )>(context->getProcAddress("glVertexAttrib1s"));
+ VertexAttrib1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib1fv"));
+ VertexAttrib1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat )>(context->getProcAddress("glVertexAttrib1f"));
+ VertexAttrib1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib1dv"));
+ VertexAttrib1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble )>(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<void (QOPENGLF_APIENTRYP)(GLuint , const GLushort *)>(context->getProcAddress("glVertexAttribI4usv"));
+ VertexAttribI4ubv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLubyte *)>(context->getProcAddress("glVertexAttribI4ubv"));
+ VertexAttribI4sv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttribI4sv"));
+ VertexAttribI4bv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLbyte *)>(context->getProcAddress("glVertexAttribI4bv"));
+ VertexAttribI4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttribI4uiv"));
+ VertexAttribI3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttribI3uiv"));
+ VertexAttribI2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttribI2uiv"));
+ VertexAttribI1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttribI1uiv"));
+ VertexAttribI4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttribI4iv"));
+ VertexAttribI3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttribI3iv"));
+ VertexAttribI2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttribI2iv"));
+ VertexAttribI1iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttribI1iv"));
+ VertexAttribI4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glVertexAttribI4ui"));
+ VertexAttribI3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glVertexAttribI3ui"));
+ VertexAttribI2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glVertexAttribI2ui"));
+ VertexAttribI1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glVertexAttribI1ui"));
+ VertexAttribI4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glVertexAttribI4i"));
+ VertexAttribI3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint )>(context->getProcAddress("glVertexAttribI3i"));
+ VertexAttribI2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint )>(context->getProcAddress("glVertexAttribI2i"));
+ VertexAttribI1i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint )>(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..b58a7186d1
--- /dev/null
+++ b/src/gui/opengl/qopenglversionfunctions.h
@@ -0,0 +1,1365 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_OPENGL
+
+#include <QtCore/qhash.h>
+#include <QtCore/qpair.h>
+#include <QtGui/qopengl.h>
+
+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<int, int> version;
+ OpenGLStatus status;
+};
+
+inline uint qHash(const QOpenGLVersionStatus &v, uint seed)
+{
+ return qHash(static_cast<int>(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 <QtCore/QtGlobal>
+#include <QtGui/qopenglcontext.h>
+
+QT_BEGIN_NAMESPACE
+
+class QAbstractOpenGLFunctions;
+
+class QOpenGLVersionFunctionsFactory
+{
+public:
+ static QAbstractOpenGLFunctions *create(const QOpenGLVersionProfile &versionProfile);
+};
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_OPENGL
+
+#endif
diff --git a/src/gui/opengl/qopenglvertexarrayobject.cpp b/src/gui/opengl/qopenglvertexarrayobject.cpp
new file mode 100644
index 0000000000..e450fe708f
--- /dev/null
+++ b/src/gui/opengl/qopenglvertexarrayobject.cpp
@@ -0,0 +1,473 @@
+/****************************************************************************
+**
+** 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 <QtCore/private/qobject_p.h>
+#include <QtGui/qopenglcontext.h>
+
+#if !defined(QT_OPENGL_ES_2)
+#include <QtGui/qopenglfunctions_3_0.h>
+#include <QtGui/qopenglfunctions_3_2_core.h>
+#endif
+
+QT_BEGIN_NAMESPACE
+
+class QVertexArrayObjectHelper
+{
+public:
+ QVertexArrayObjectHelper(QOpenGLContext *context)
+ {
+ Q_ASSERT(context);
+#if !defined(QT_OPENGL_ES_2)
+ GenVertexArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenVertexArrays"));
+ DeleteVertexArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteVertexArrays"));
+ BindVertexArray = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glBindVertexArray"));
+#else
+ GenVertexArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenVertexArraysOES"));
+ DeleteVertexArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteVertexArraysOES"));
+ BindVertexArray = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(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;
+ }
+ context = ctx;
+
+#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<int, int>(3,2)) {
+ vaoFuncs.core_3_2 = ctx->versionFunctions<QOpenGLFunctions_3_2_Core>();
+ 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<QOpenGLFunctions_3_0>();
+ 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 && 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 <QtCore/QObject>
+#include <QtGui/qopengl.h>
+
+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
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<T>::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<T>::ComplexToSimple::DebugDialog::DebugDialog(ComplexToSimple *par
QDataBuffer<QPodPoint> &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<T>::ComplexToSimple::DebugDialog::paintEvent(QPaintEvent *)
QDataBuffer<QPodPoint> &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<T>::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/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 <qpa/qplatformbackingstore.h>
#include <qpa/qplatformintegration.h>
#include <qscreen.h>
+#include <qdebug.h>
#include <private/qguiapplication_p.h>
#include <private/qwindow_p.h>
@@ -97,8 +98,10 @@ void QBackingStore::flush(const QRegion &region, 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);
}
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 <QtGui/qwindow.h>
#include <QtGui/qregion.h>
-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..4d8c97e255 100644
--- a/src/gui/painting/qbrush.h
+++ b/src/gui/painting/qbrush.h
@@ -52,17 +52,6 @@
#include <QtGui/qimage.h>
#include <QtGui/qpixmap.h>
-#if defined(Q_OS_VXWORKS)
-# if defined(m_data)
-# undef m_data
-# endif
-# if defined(m_type)
-# undef m_type
-# endif
-#endif
-
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -326,6 +315,4 @@ public:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QBRUSH_H
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 cd65984f4e..ef3503e8d8 100644
--- a/src/gui/painting/qcolor.h
+++ b/src/gui/painting/qcolor.h
@@ -46,8 +46,6 @@
#include <QtCore/qnamespace.h>
#include <QtCore/qstringlist.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -268,14 +266,12 @@ 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
-QT_END_HEADER
-
#endif // QCOLOR_H
diff --git a/src/gui/painting/qcosmeticstroker_p.h b/src/gui/painting/qcosmeticstroker_p.h
index f4fb5fab30..05c8a2b0cf 100644
--- a/src/gui/painting/qcosmeticstroker_p.h
+++ b/src/gui/painting/qcosmeticstroker_p.h
@@ -47,8 +47,6 @@
#include <private/qpaintengine_raster_p.h>
#include <qpen.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -157,6 +155,4 @@ public:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QCOSMETICLINE_H
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/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 0f77ae6d86..906ef128fa 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 <class DST>
+template <class DST> 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 258f130efc..5d9867012f 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -70,15 +70,19 @@ 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__
+#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_STATIC_INLINE_FUNCTION static inline
+# define Q_ALWAYS_INLINE inline
# define Q_DECL_RESTRICT
#endif
@@ -382,13 +386,14 @@ static inline qreal qRadialDeterminant(qreal a, qreal b, qreal c)
return (b * b) - (4 * a * c);
}
-template <class RadialFetchFunc>
+extern void (*qt_memfill32)(quint32 *dest, quint32 value, int count);
+
+template <class RadialFetchFunc> 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;
}
@@ -562,7 +567,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 +584,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 +592,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 +609,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 +624,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 +639,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 +654,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;
@@ -687,12 +692,11 @@ inline quint24::operator uint() const
return data[2] | (data[1] << 8) | (data[0] << 16);
}
-template <class T>
+template <class T> Q_STATIC_TEMPLATE_FUNCTION
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);
}
@@ -728,7 +732,7 @@ inline void qt_memfill(T *dest, T value, int count)
}
}
-template <class T>
+template <class T> Q_STATIC_TEMPLATE_FUNCTION
inline void qt_rectfill(T *dest, T value,
int x, int y, int width, int height, int stride)
{
@@ -794,7 +798,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
diff --git a/src/gui/painting/qemulationpaintengine_p.h b/src/gui/painting/qemulationpaintengine_p.h
index f706ef3705..db2d51e53a 100644
--- a/src/gui/painting/qemulationpaintengine_p.h
+++ b/src/gui/painting/qemulationpaintengine_p.h
@@ -55,8 +55,6 @@
#include <private/qpaintengineex_p.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -64,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;
@@ -80,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();
@@ -107,6 +105,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/gui/painting/qgrayraster.c b/src/gui/painting/qgrayraster.c
index 8be462517c..7dfb743ae2 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;
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 <QtCore/qpoint.h>
#include <QtCore/qrect.h>
-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/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/gui/painting/qpagedpaintdevice.h b/src/gui/painting/qpagedpaintdevice.h
index b2b53d8038..d44a401184 100644
--- a/src/gui/painting/qpagedpaintdevice.h
+++ b/src/gui/painting/qpagedpaintdevice.h
@@ -44,8 +44,6 @@
#include <QtGui/qpaintdevice.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
#if defined(B0)
@@ -90,6 +88,4 @@ protected:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/gui/painting/qpaintbuffer.cpp b/src/gui/painting/qpaintbuffer.cpp
index 1a5a19a366..bb0c441b40 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;
@@ -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<QVariantList>());
-
+
QFont font = variants.at(0).value<QFont>();
QVector<quint32> glyphIndexes;
@@ -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/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 <QtGui/qwindowdefs.h>
#include <QtCore/qrect.h>
-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 <QtCore/qscopedpointer.h>
#include <QtGui/qpainter.h>
-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/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 941e3ea71a..a123c147a2 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -2858,7 +2858,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;
@@ -3011,13 +3023,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;
@@ -3056,7 +3070,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<QFixedPoint> positions;
QVarLengthArray<glyph_t> glyphs;
@@ -3300,21 +3314,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 d9e4a4b505..00a9ae750c 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 83b684da1e..6e72b5db7f 100644
--- a/src/gui/painting/qpaintengineex.cpp
+++ b/src/gui/painting/qpaintengineex.cpp
@@ -1081,18 +1081,16 @@ 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
{
+ 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/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h
index 399a6f63b0..5a9df72c76 100644
--- a/src/gui/painting/qpaintengineex_p.h
+++ b/src/gui/painting/qpaintengineex_p.h
@@ -61,8 +61,6 @@
#include <private/qvectorpath_p.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -164,7 +162,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:
@@ -192,6 +190,4 @@ public:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 786136d203..be77fffc7c 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.
@@ -5552,13 +5548,13 @@ void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphRun)
QVarLengthArray<QFixedPoint, 128> 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; i<count; ++i) {
QPointF processedPosition = position + glyphPositions[i];
- if (!supportsTransformations)
+ if (engineRequiresPretransformedGlyphPositions)
processedPosition = d->state->transform().map(processedPosition);
fixedPointPositions[i] = QFixedPoint::fromPointF(processedPosition);
}
@@ -5616,13 +5612,13 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, QFixedPoint *positio
QVarLengthArray<QFixed, 128> advances(glyphCount);
QVarLengthArray<QGlyphJustification, 128> glyphJustifications(glyphCount);
- QVarLengthArray<HB_GlyphAttributes, 128> glyphAttributes(glyphCount);
- memset(glyphAttributes.data(), 0, glyphAttributes.size() * sizeof(HB_GlyphAttributes));
+ QVarLengthArray<QGlyphAttributes, 128> 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<HB_Glyph *>(const_cast<quint32 *>(glyphArray));
+ textItem.glyphs.glyphs = const_cast<glyph_t *>(glyphArray);
textItem.glyphs.offsets = positions;
textItem.glyphs.advances_x = advances.data();
textItem.glyphs.advances_y = advances.data();
@@ -5738,17 +5734,21 @@ 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<QFontEngineMulti *>(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
@@ -5841,11 +5841,11 @@ 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);
- 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/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 <QtGui/qfontmetrics.h>
#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 <QtCore/qvector.h>
#include <QtCore/qscopedpointer.h>
-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 <private/qdatabuffer_p.h>
#include <stdio.h>
-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 <QtCore/qobject.h>
#include <QtGui/qpagedpaintdevice.h>
-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 <QtGui/qcolor.h>
#include <QtGui/qbrush.h>
-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 <QtGui/qwindow.h>
#include <QtGui/qregion.h>
-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 <QtCore/qpoint.h>
#include <QtCore/qrect.h>
-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 <QtCore/qdatastream.h>
#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..d7a01840e8 100644
--- a/src/gui/painting/qrgb.h
+++ b/src/gui/painting/qrgb.h
@@ -44,14 +44,13 @@
#include <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
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); }
@@ -82,6 +81,4 @@ inline bool qIsGray(QRgb rgb)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QRGB_H
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index ed0473749e..6676d3daa6 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -135,6 +135,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;
}
@@ -163,7 +164,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();
@@ -281,6 +282,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);
}
@@ -312,6 +315,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;
}
}
@@ -328,7 +332,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/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 <private/qfontengineglyphcache_p.h>
-#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 f98642cd98..060362f63e 100644
--- a/src/gui/painting/qtransform.h
+++ b/src/gui/painting/qtransform.h
@@ -50,12 +50,6 @@
#include <QtCore/qpoint.h>
#include <QtCore/qrect.h>
-#if defined(Q_OS_VXWORKS) && defined(m_type)
-# undef m_type
-#endif
-
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -389,6 +383,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 <private/qpainter_p.h>
-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/qabstractfontengine_p.h b/src/gui/text/qabstractfontengine_p.h
deleted file mode 100644
index e122cc5b4f..0000000000
--- a/src/gui/text/qabstractfontengine_p.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 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/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/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 <QtGui/qtextcursor.h>
#include <QtGui/qpalette.h>
-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/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<LengthData>(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<QRect>(d->parsed);
@@ -1934,7 +1934,7 @@ QVector<StyleRule> StyleSelector::styleRulesForNode(NodePtr node)
return rules;
QMap<uint, StyleRule> 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/qfont.cpp b/src/gui/text/qfont.cpp
index 2961cb9493..fc694dc497 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -55,7 +55,6 @@
#include "qthread.h"
#include "qthreadstorage.h"
-#include <private/qunicodetables_p.h>
#include "qfont_p.h"
#include <private/qfontengine_p.h>
#include <private/qpainter_p.h>
@@ -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,15 +318,17 @@ 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) {
- if (engines[i])
- engines[i]->ref.deref();
- engines[i] = 0;
+ for (int i = 0; i < QChar::ScriptCount; ++i) {
+ if (engines[i]) {
+ if (!engines[i]->ref.deref())
+ delete engines[i];
+ engines[i] = 0;
+ }
}
}
@@ -1667,7 +1668,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 +2364,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 +2379,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 +2391,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 +2403,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 +2415,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 +2427,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 +2439,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 +2451,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 +2516,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 +2540,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 +2568,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
@@ -2648,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()
@@ -2675,9 +2658,12 @@ 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();
+ if (!data->engines[i]->ref.deref()) {
+ Q_ASSERT(engineCacheCount.value(data->engines[i]) == 0);
+ delete data->engines[i];
+ }
data->engines[i] = 0;
}
}
@@ -2685,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();
}
@@ -2717,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));
@@ -2742,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;
@@ -2757,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)
@@ -2826,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;
}
@@ -2844,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
@@ -2894,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();
@@ -2924,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.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 <QtCore/qsharedpointer.h>
-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/qfont_p.h b/src/gui/text/qfont_p.h
index b5e753e246..4cbf51d59c 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 <private/qunicodetables_p.h>
#include <QtGui/qfontdatabase.h>
#include "private/qfixed_p.h"
@@ -143,7 +142,7 @@ public:
QAtomicInt ref;
QFontCache *fontCache;
- QFontEngine *engines[QUnicodeTables::ScriptCount];
+ QFontEngine *engines[QChar::ScriptCount];
};
@@ -194,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();
@@ -206,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)
@@ -246,13 +243,14 @@ public:
typedef QMap<Key,Engine> EngineCache;
EngineCache engineCache;
+ QHash<QFontEngine *, int> 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/qfont_qpa.cpp b/src/gui/text/qfont_qpa.cpp
index a955f5446d..be432dc52f 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 48769107d0..f052d8fd89 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 <qpa/qplatformintegration.h>
@@ -384,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<QFontDatabase::WritingSystem> qt_determine_writing_systems_from_truetype_bits(quint32 unicodeRange[4], quint32 codePageRange[2])
-{
- QList<QFontDatabase::WritingSystem> 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
{
@@ -601,40 +473,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, // 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)
@@ -1051,7 +931,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.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 <QtCore/qstring.h>
#include <QtGui/qfont.h>
-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/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp
index a72b21ede3..0d38c6a290 100644
--- a/src/gui/text/qfontdatabase_qpa.cpp
+++ b/src/gui/text/qfontdatabase_qpa.cpp
@@ -104,7 +104,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();
@@ -175,7 +175,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);
@@ -200,7 +200,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;
}
@@ -210,7 +210,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;
@@ -322,7 +322,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;
@@ -427,7 +427,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.cpp b/src/gui/text/qfontengine.cpp
index 87fa202fb4..dbe56889da 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 = {
@@ -165,27 +165,80 @@ 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);
+}
+
+
+#ifdef QT_BUILD_INTERNAL
+// for testing purpose only, not thread-safe!
+static QList<QFontEngine *> *enginesCollector = 0;
+
+Q_AUTOTEST_EXPORT void QFontEngine_startCollectingEngines()
+{
+ delete enginesCollector;
+ enginesCollector = new QList<QFontEngine *>();
+}
+
+Q_AUTOTEST_EXPORT QList<QFontEngine *> QFontEngine_stopCollectingEngines()
+{
+ Q_ASSERT(enginesCollector);
+ QList<QFontEngine *> ret = *enginesCollector;
+ delete enginesCollector;
+ enginesCollector = 0;
+ return ret;
+}
+#endif // QT_BUILD_INTERNAL
+
+
// 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;
+
+#ifdef QT_BUILD_INTERNAL
+ if (enginesCollector)
+ enginesCollector->append(this);
+#endif
}
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;
+ }
+
+#ifdef QT_BUILD_INTERNAL
+ if (enginesCollector)
+ enginesCollector->removeOne(this);
+#endif
}
QFixed QFontEngine::lineThickness() const
@@ -206,34 +259,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<QFontEngine *>(this), hb_getSFntTable);
+ if (!face_) {
+ HB_Face hbFace = qHBNewFace(const_cast<QFontEngine *>(this), hb_getSFntTable);
Q_CHECK_PTR(hbFace);
+ if (hbFace->font_for_init != 0)
+ hbFace = qHBLoadFace(hbFace);
+
+ face_ = (void *)hbFace;
+ face_destroy_func = hb_freeFace;
}
- return hbFace;
+ return face_;
}
-HB_Face QFontEngine::initializedHarfbuzzFace() const
+bool QFontEngine::supportsScript(QChar::Script script) const
{
- HB_Face face = harfbuzzFace();
- if (face != 0 && face->font_for_init != 0)
- face = qHBLoadFace(face);
-
- return face;
+ 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)
@@ -268,9 +324,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,
@@ -649,6 +705,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())
@@ -1194,7 +1257,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;
@@ -1352,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_ft.cpp b/src/gui/text/qfontengine_ft.cpp
index 83ba89263a..19b4411b47 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 <private/qharfbuzz_p.h>
+
#ifndef QT_NO_FREETYPE
#include "qfile.h"
@@ -183,9 +185,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 +200,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;
}
@@ -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;
+ 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;
- hbFace = freetype->hbFace;
+ // ###
+ 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;
@@ -1580,12 +1590,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)
@@ -2036,13 +2049,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..434eb76c33 100644
--- a/src/gui/text/qfontengine_ft_p.h
+++ b/src/gui/text/qfontengine_ft_p.h
@@ -69,8 +69,6 @@
#include <qmutex.h>
-#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;
@@ -113,7 +111,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 +296,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 c2d22d9e83..f0f8713f74 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -60,16 +60,10 @@
#include "private/qtextengine_p.h"
#include "private/qfont_p.h"
-
-
#include <private/qfontengineglyphcache_p.h>
-struct glyph_metrics_t;
-typedef unsigned int glyph_t;
-
QT_BEGIN_NAMESPACE
-class QChar;
class QPainterPath;
struct QGlyphLayout;
@@ -81,6 +75,7 @@ struct QGlyphLayout;
((quint32)(ch4)) \
)
+typedef void (*qt_destroy_func_t) (void *user_data);
class Q_GUI_EXPORT QFontEngine : public QObject
{
@@ -112,7 +107,8 @@ public:
Format_Render = Format_None,
Format_Mono,
Format_A8,
- Format_A32
+ Format_A32,
+ Format_ARGB
};
enum ShaperFlag {
@@ -165,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;
@@ -191,6 +182,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(),
@@ -241,7 +233,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;
@@ -250,11 +242,11 @@ 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 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;
@@ -274,12 +266,15 @@ 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_qpa.cpp b/src/gui/text/qfontengine_qpa.cpp
index 4a61b27298..837850e4be 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/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 <QtCore/QFile>
-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/qfontengine_qpf.cpp b/src/gui/text/qfontengine_qpf.cpp
index df80e9e87d..def671c62f 100644
--- a/src/gui/text/qfontengine_qpf.cpp
+++ b/src/gui/text/qfontengine_qpf.cpp
@@ -50,6 +50,7 @@
#include <QtCore/qbuffer.h>
#if !defined(QT_NO_FREETYPE)
#include "private/qfontengine_ft_p.h"
+#include <private/qharfbuzz_p.h>
#endif
#include "private/qcore_unix_p.h" // overrides QT_OPEN
@@ -666,9 +667,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<QProxyFontEngine *>(renderingFontEngine)->capabilities() & QAbstractFontEngine::CanOutlineGlyphs)) {
+ if (renderingFontEngine && renderingFontEngine->type() != QFontEngine::Proxy) {
renderingFontEngine->addOutlineToPath(x, y, glyphs, path, flags);
return;
}
@@ -856,12 +855,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/qfontengineglyphcache_p.h b/src/gui/text/qfontengineglyphcache_p.h
index 1dc4db00c4..ac01c78399 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/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 <QtGui/qfont.h>
#include <QtCore/qsharedpointer.h>
-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.cpp b/src/gui/text/qfontmetrics.cpp
index f3151da16b..ad3d2bb813 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 <private/qunicodetables_p.h>
#include <math.h>
@@ -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);
@@ -527,10 +526,10 @@ 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(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/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 <QtCore/qrect.h>
#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/qharfbuzz_copy_p.h b/src/gui/text/qharfbuzz_copy_p.h
deleted file mode 100644
index 7225ff7717..0000000000
--- a/src/gui/text/qharfbuzz_copy_p.h
+++ /dev/null
@@ -1,106 +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 <private/qharfbuzz_p.h>
-#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 QT_PREPEND_NAMESPACE(quint32) hb_uint32;
-typedef QT_PREPEND_NAMESPACE(quint16) HB_UShort;
-typedef QT_PREPEND_NAMESPACE(qint32) HB_16Dot16;
-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;
-
-typedef struct HB_Font_ {
- const void *klass;
-
- /* Metrics */
- HB_UShort x_ppem, y_ppem;
- HB_16Dot16 x_scale, y_scale;
-
- void *userData;
-} HB_FontRec;
-
-}
-
-#endif // ifdef QT_BUILD_GUI_LIB
-
-#endif // QHARFBUZZ_COPY_P_H
diff --git a/src/gui/text/qplatformfontdatabase.cpp b/src/gui/text/qplatformfontdatabase.cpp
index 070550730d..4e2a2df66a 100644
--- a/src/gui/text/qplatformfontdatabase.cpp
+++ b/src/gui/text/qplatformfontdatabase.cpp
@@ -278,8 +278,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);
}
@@ -288,7 +287,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);
@@ -312,7 +311,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);
@@ -414,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 319447c19f..6e53eba98b 100644
--- a/src/gui/text/qplatformfontdatabase.h
+++ b/src/gui/text/qplatformfontdatabase.h
@@ -59,8 +59,6 @@
#include <QtGui/QFontDatabase>
#include <QtGui/private/qfont_p.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -98,9 +96,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);
@@ -114,6 +112,9 @@ public:
virtual bool fontsAlwaysScalable() const;
virtual QList<int> 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,
@@ -125,6 +126,4 @@ public:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPLATFORMFONTDATABASE_H
diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp
index 279f0ecd90..f52b46eeae 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 <QtCore/qendian.h>
@@ -125,6 +126,20 @@ QT_BEGIN_NAMESPACE
*/
/*!
+ \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.
*/
QRawFont::QRawFont()
@@ -509,39 +524,60 @@ bool QRawFont::glyphIndexesForChars(const QChar *chars, int numChars, quint32 *g
}
/*!
- \fn QVector<QPointF> QRawFont::advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes) const
+ \fn QVector<QPointF> QRawFont::advancesForGlyphIndexes(const QVector<quint32> &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. How the advances are calculated is
+ controlled by \a layoutFlags.
+
+ \sa QTextLine::horizontalAdvance(), QFontMetricsF::width()
+*/
+
+/*!
+ \fn QVector<QPointF> QRawFont::advancesForGlyphIndexes(const QVector<quint32> &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.
+ 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)
return false;
QGlyphLayout glyphs;
- glyphs.glyphs = const_cast<HB_Glyph *>(glyphIndexes);
+ glyphs.glyphs = const_cast<glyph_t *>(glyphIndexes);
glyphs.numGlyphs = numGlyphs;
QVarLengthArray<QFixed> advances_x(numGlyphs);
QVarLengthArray<QFixed> advances_y(numGlyphs);
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<numGlyphs; ++i)
advances[i] = QPointF(glyphs.advances_x[i].toReal(), glyphs.advances_y[i].toReal());
@@ -550,6 +586,22 @@ bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *adv
}
/*!
+ \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 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. The advance of each glyph is calculated separately
+
+ \sa QTextLine::horizontalAdvance(), QFontMetricsF::width()
+*/
+bool QRawFont::advancesForGlyphIndexes(const quint32 *glyphIndexes, QPointF *advances, int numGlyphs) const
+{
+ return QRawFont::advancesForGlyphIndexes(glyphIndexes, advances, numGlyphs, SeparateAdvances);
+}
+
+/*!
Returns the hinting preference used to construct this QRawFont.
\sa QFont::hintingPreference()
@@ -574,9 +626,6 @@ QByteArray QRawFont::fontTable(const char *tagName) const
return d->fontEngine->getSfntTable(qToBigEndian(*tagId));
}
-// From qfontdatabase.cpp
-extern QList<QFontDatabase::WritingSystem> 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 +639,7 @@ extern QList<QFontDatabase::WritingSystem> qt_determine_writing_systems_from_tru
*/
QList<QFontDatabase::WritingSystem> QRawFont::supportedWritingSystems() const
{
+ QList<QFontDatabase::WritingSystem> writingSystems;
if (d->isValid()) {
QByteArray os2Table = fontTable("OS/2");
if (os2Table.size() > 86) {
@@ -606,11 +656,15 @@ QList<QFontDatabase::WritingSystem> 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<QFontDatabase::WritingSystem>();
+ return writingSystems;
}
/*!
@@ -684,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;
}
@@ -696,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/qrawfont.h b/src/gui/text/qrawfont.h
index 9a8af41437..eb84a8fee7 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
@@ -67,6 +65,13 @@ public:
SubPixelAntialiasing
};
+ enum LayoutFlag {
+ SeparateAdvances = 0,
+ KernedAdvances = 1,
+ UseDesignMetrics = 2
+ };
+ Q_DECLARE_FLAGS(LayoutFlags, LayoutFlag)
+
QRawFont();
QRawFont(const QString &fileName,
qreal pixelSize,
@@ -95,8 +100,10 @@ public:
QVector<quint32> glyphIndexesForString(const QString &text) const;
inline QVector<QPointF> advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes) const;
+ inline QVector<QPointF> advancesForGlyphIndexes(const QVector<quint32> &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,
@@ -147,17 +154,22 @@ private:
Q_DECLARE_SHARED(QRawFont)
-inline QVector<QPointF> QRawFont::advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes) const
+Q_DECLARE_OPERATORS_FOR_FLAGS(QRawFont::LayoutFlags)
+
+inline QVector<QPointF> QRawFont::advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes, QRawFont::LayoutFlags layoutFlags) const
{
QVector<QPointF> advances(glyphIndexes.size());
- if (advancesForGlyphIndexes(glyphIndexes.constData(), advances.data(), glyphIndexes.size()))
+ if (advancesForGlyphIndexes(glyphIndexes.constData(), advances.data(), glyphIndexes.size(), layoutFlags))
return advances;
return QVector<QPointF>();
}
-QT_END_NAMESPACE
+inline QVector<QPointF> QRawFont::advancesForGlyphIndexes(const QVector<quint32> &glyphIndexes) const
+{
+ return advancesForGlyphIndexes(glyphIndexes, QRawFont::SeparateAdvances);
+}
-QT_END_HEADER
+QT_END_NAMESPACE
#endif // QT_NO_RAWFONT
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 f11e7403fc..e41c475495 100644
--- a/src/gui/text/qstatictext.h
+++ b/src/gui/text/qstatictext.h
@@ -50,14 +50,12 @@
#include <QtGui/qfont.h>
#include <QtGui/qtextoption.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QStaticTextPrivate;
class Q_GUI_EXPORT QStaticText
-{
+{
public:
enum PerformanceHint {
ModerateCaching,
@@ -107,6 +105,4 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QStaticText)
-QT_END_HEADER
-
#endif // QSTATICTEXT_H
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/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 <QtCore/qobject.h>
#include <QtGui/qtextobject.h>
-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 <QtCore/qshareddata.h>
#include <QtGui/qtextformat.h>
-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.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/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 <QtCore/qvariant.h>
#include <QtGui/qfont.h>
-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 <QtCore/qstring.h>
-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 <QtCore/qstring.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -87,6 +85,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index f0776c6098..2fa7f0232d 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 <private/qunicodetables_p.h>
#include "qtextdocument_p.h"
#include "qrawfont.h"
#include "qrawfont_p.h"
@@ -62,6 +61,8 @@
#include "qfontengine_qpa_p.h"
+#include <private/qharfbuzz_p.h>
+
QT_BEGIN_NAMESPACE
static const float smallCapsFraction = 0.7f;
@@ -837,13 +838,6 @@ void QTextEngine::bidiReorder(int numItems, const quint8 *levels, int *visualOrd
#endif
}
-QT_BEGIN_INCLUDE_NAMESPACE
-
-
-#include <private/qharfbuzz_p.h>
-
-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)
{
@@ -972,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;
@@ -1004,7 +1000,7 @@ void QTextEngine::shapeTextWithHarfbuzz(int item) const
memset(&entire_shaper_item, 0, sizeof(entire_shaper_item));
entire_shaper_item.string = reinterpret_cast<const HB_UChar16 *>(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;
@@ -1075,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;
}
}
@@ -1115,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;
@@ -1130,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<HB_Glyph *>(g.glyphs);
+ shaper_item.attributes = reinterpret_cast<HB_GlyphAttributes *>(g.attributes);
shaper_item.advances = reinterpret_cast<HB_Fixed *>(g.advances_x);
shaper_item.offsets = reinterpret_cast<HB_FixedPoint *>(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;
}
@@ -1148,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);
}
@@ -1168,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;
@@ -1225,7 +1221,7 @@ const QCharAttributes *QTextEngine::attributes() const
scriptItems[i].script = si.analysis.script;
}
- QUnicodeTools::initCharAttributes(reinterpret_cast<const HB_UChar16 *>(layoutData->string.constData()),
+ QUnicodeTools::initCharAttributes(reinterpret_cast<const ushort *>(layoutData->string.constData()),
layoutData->string.length(),
scriptItems.data(), scriptItems.size(),
(QCharAttributes *)layoutData->memory);
@@ -1257,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()
@@ -1313,6 +1306,8 @@ void QTextEngine::itemize() const
if (!length)
return;
+ const ushort *string = reinterpret_cast<const ushort *>(layoutData->string.unicode());
+
bool ignore = ignoreBidi;
bool rtl = isRightToLeft();
@@ -1346,44 +1341,48 @@ void QTextEngine::itemize() const
layoutData->hasBidi = bidiItemize(const_cast<QTextEngine *>(this), analysis, control);
}
- const ushort *uc = reinterpret_cast<const ushort *>(layoutData->string.unicode());
+ {
+ QVarLengthArray<uchar> 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;
- int lastScript = QUnicodeTables::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<ushort*>(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->flags = QScriptAnalysis::None;
break;
}
- lastScript = analysis->script;
+ analysis->script = hbscript_to_script(script_to_hbscript(analysis->script)); // retain the old behavior
++uc;
++analysis;
}
@@ -1431,11 +1430,13 @@ 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);
- if (range.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, range.format.fontCapitalization());
+ itemizer.generate(range.start, range.length, format.fontCapitalization());
lastIndex = range.start + range.length;
}
}
@@ -2035,9 +2036,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();
@@ -2155,11 +2156,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
@@ -2206,25 +2207,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
@@ -2295,6 +2280,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<QTextLayout::FormatRange> QTextEngine::additionalFormats() const
+{
+ QList<QTextLayout::FormatRange> 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<QTextLayout::FormatRange> &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()
{
@@ -2421,7 +2467,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;
{
@@ -2772,13 +2818,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);
}
@@ -2868,8 +2910,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/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h
index 93e92e7ca8..ec7f7407b2 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 <private/qunicodetools_p.h>
@@ -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<QFixedPoint *>(address);
- int offset = totalGlyphs * sizeof(HB_FixedPoint);
- glyphs = reinterpret_cast<HB_Glyph *>(address + offset);
- offset += totalGlyphs * sizeof(HB_Glyph);
+ int offset = totalGlyphs * sizeof(QFixedPoint);
+ glyphs = reinterpret_cast<glyph_t *>(address + offset);
+ offset += totalGlyphs * sizeof(glyph_t);
advances_x = reinterpret_cast<QFixed *>(address + offset);
offset += totalGlyphs * sizeof(QFixed);
advances_y = reinterpret_cast<QFixed *>(address + offset);
offset += totalGlyphs * sizeof(QFixed);
justifications = reinterpret_cast<QGlyphJustification *>(address + offset);
offset += totalGlyphs * sizeof(QGlyphJustification);
- attributes = reinterpret_cast<HB_GlyphAttributes *>(address + offset);
+ attributes = reinterpret_cast<QGlyphAttributes *>(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];
@@ -603,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<QTextLayout::FormatRange> additionalFormats() const;
+ void setAdditionalFormats(const QList<QTextLayout::FormatRange> &formatList);
+
+private:
+ static void init(QTextEngine *e);
+
struct SpecialData {
int preeditPosition;
QString preeditText;
@@ -621,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;
@@ -661,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/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 <QtGui/qbrush.h>
#include <QtGui/qtextoption.h>
-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.cpp b/src/gui/text/qtextlayout.cpp
index 833e4c5037..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<FormatRange> &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<FormatRange> &formatList)
*/
QList<QTextLayout::FormatRange> QTextLayout::additionalFormats() const
{
- QList<FormatRange> 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();
}
/*!
@@ -1022,7 +977,7 @@ static inline QRectF clipIfValid(const QRectF &rect, const QRectF &clip)
*/
#if !defined(QT_NO_RAWFONT)
QList<QGlyphRun> QTextLayout::glyphRuns(int from, int length) const
-{
+{
if (from < 0)
from = 0;
if (length < 0)
@@ -1651,7 +1606,7 @@ namespace {
}
inline glyph_t currentGlyph() const
- {
+ {
Q_ASSERT(currentPosition > 0);
Q_ASSERT(logClusters[currentPosition - 1] < glyphs.numGlyphs);
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 <QtGui/qglyphrun.h>
#include <QtGui/qtextcursor.h>
-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 <QtGui/qtextobject.h>
#include <QtCore/qobject.h>
-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.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/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 <QtGui/qtextformat.h>
#include <QtGui/qglyphrun.h>
-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/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/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 <QtCore/qglobal.h>
+
#ifndef QT_NO_TEXTODFWRITER
//
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::Tab> 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/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 <QtCore/qmetatype.h>
-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.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/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 <QtCore/qobject.h>
#include <QtGui/qtextobject.h>
-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/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));
}
/*!
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 <QtCore/qglobal.h>
+
#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 <QtCore/qglobal.h>
+
#ifndef QT_NO_TEXTODFWRITER
//
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/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 <QtCore/qstring.h>
#include <QtCore/qstandardpaths.h>
-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.cpp b/src/gui/util/qvalidator.cpp
index b94ec7f1bb..ed3b3b6dd6 100644
--- a/src/gui/util/qvalidator.cpp
+++ b/src/gui/util/qvalidator.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 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 <giuseppe.dangelo@kdab.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtGui module of the Qt Toolkit.
@@ -501,9 +502,6 @@ void QIntValidator::setTop(int top)
setRange(bottom(), top);
}
-
-#ifndef QT_NO_REGEXP
-
/*!
\internal
*/
@@ -520,6 +518,8 @@ QValidator::QValidator(QValidatorPrivate &d, QObject *parent)
{
}
+#ifndef QT_NO_REGEXP
+
class QDoubleValidatorPrivate : public QValidatorPrivate
{
Q_DECLARE_PUBLIC(QDoubleValidator)
@@ -906,6 +906,159 @@ void QRegExpValidator::setRegExp(const QRegExp& rx)
#endif
+#ifndef QT_NO_REGULAREXPRESSION
+
+/*!
+ \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_REGULAREXPRESSION
+
QT_END_NAMESPACE
#endif // QT_NO_VALIDATOR
diff --git a/src/gui/util/qvalidator.h b/src/gui/util/qvalidator.h
index 6ffab4907b..386af1bc74 100644
--- a/src/gui/util/qvalidator.h
+++ b/src/gui/util/qvalidator.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 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 <giuseppe.dangelo@kdab.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtGui module of the Qt Toolkit.
@@ -45,10 +46,9 @@
#include <QtCore/qobject.h>
#include <QtCore/qstring.h>
#include <QtCore/qregexp.h>
+#include <QtCore/qregularexpression.h>
#include <QtCore/qlocale.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -195,10 +195,39 @@ private:
#endif // QT_NO_REGEXP
+#ifndef QT_NO_REGULAREXPRESSION
+
+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_REGULAREXPRESSION
+
#endif // QT_NO_VALIDATOR
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 <QtCore/qpair.h>
#include <QtNetwork/qnetworkrequest.h>
-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 <private/qurlinfo_p.h>
#include <QtCore/qobject.h>
-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 <QtCore/QIODevice>
#include <QtNetwork/QNetworkRequest>
-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/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index eec5cfa96d..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) {
@@ -1224,6 +1224,18 @@ void QHttpNetworkConnection::setSslConfiguration(const QSslConfiguration &config
d->channels[i].setSslConfiguration(config);
}
+QSharedPointer<QSslContext> QHttpNetworkConnection::sslContext()
+{
+ Q_D(QHttpNetworkConnection);
+ return d->sslContext;
+}
+
+void QHttpNetworkConnection::setSslContext(QSharedPointer<QSslContext> 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 <qnetworkproxy.h>
#include <qbuffer.h>
#include <qtimer.h>
+#include <qsharedpointer.h>
#include <private/qhttpnetworkheader_p.h>
#include <private/qhttpnetworkrequest_p.h>
@@ -72,6 +73,8 @@
#ifndef QT_NO_HTTP
#ifndef QT_NO_SSL
+# include <private/qsslcontext_p.h>
+# include <private/qsslsocket_p.h>
# include <QtNetwork/qsslsocket.h>
# include <QtNetwork/qsslerror.h>
#else
@@ -124,6 +127,8 @@ public:
void setSslConfiguration(const QSslConfiguration &config);
void ignoreSslErrors(int channel = -1);
void ignoreSslErrors(const QList<QSslError> &errors, int channel = -1);
+ QSharedPointer<QSslContext> sslContext();
+ void setSslContext(QSharedPointer<QSslContext> context);
#endif
private:
@@ -234,6 +239,10 @@ public:
QList<HttpMessagePair> highPriorityQueue;
QList<HttpMessagePair> lowPriorityQueue;
+#ifndef QT_NO_SSL
+ QSharedPointer<QSslContext> sslContext;
+#endif
+
#ifndef QT_NO_BEARERMANAGEMENT
QSharedPointer<QNetworkSession> networkSession;
#endif
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 38723a7032..4b8fe8aca7 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<QSslSocket*>(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<QSslContext> socketSslContext = QSslSocketPrivate::sslContext(static_cast<QSslSocket*>(socket));
+ if (!socketSslContext.isNull())
+ connection->setSslContext(socketSslContext);
+ }
+#endif
+ } else {
state = QHttpNetworkConnectionChannel::IdleState;
if (!reply)
connection->d_func()->dequeueRequest(socket);
@@ -1208,6 +1225,8 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
if (!reply)
connection->d_func()->dequeueRequest(socket);
if (reply)
+ emit reply->encrypted();
+ if (reply)
sendRequest();
}
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<QHttpNetworkConnection> connection;
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<QSslError> &errors);
Q_SIGNALS:
+ void encrypted();
void sslErrors(const QList<QSslError> &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<QSslError>)), this, SLOT(sslErrorsSlot(QList<QSslError>)));
#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<QSslError> &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<QSslError> &, bool *, QList<QSslError> *);
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<QSslError> &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<QSslError> &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<QSslError> &errors);
void emitReplyUploadProgress(qint64 bytesSent, qint64 bytesTotal);
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/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 6899653800..83cb729589 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -374,6 +374,32 @@ static void ensureInitialized()
*/
/*!
+ \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<QSslError> &errors)
This signal is emitted if the SSL/TLS session encountered errors
@@ -646,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.
@@ -661,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
@@ -681,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)
@@ -744,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
@@ -781,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()
@@ -834,10 +860,12 @@ QNetworkConfiguration QNetworkAccessManager::configuration() const
Q_D(const QNetworkAccessManager);
QSharedPointer<QNetworkSession> session(d->getNetworkSession());
- if (session)
+ if (session) {
return session->configuration();
- else
- return QNetworkConfiguration();
+ } else {
+ QNetworkConfigurationManager manager;
+ return manager.defaultConfiguration();
+ }
}
/*!
@@ -860,13 +888,12 @@ QNetworkConfiguration QNetworkAccessManager::activeConfiguration() const
Q_D(const QNetworkAccessManager);
QSharedPointer<QNetworkSession> networkSession(d->getNetworkSession());
+ QNetworkConfigurationManager manager;
if (networkSession) {
- QNetworkConfigurationManager manager;
-
return manager.configurationFromIdentifier(
networkSession->sessionProperty(QLatin1String("ActiveConfiguration")).toString());
} else {
- return QNetworkConfiguration();
+ return manager.defaultConfiguration();
}
}
@@ -983,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);
}
@@ -1131,6 +1162,16 @@ void QNetworkAccessManagerPrivate::_q_replyFinished()
#endif
}
+void QNetworkAccessManagerPrivate::_q_replyEncrypted()
+{
+#ifndef QT_NO_SSL
+ Q_Q(QNetworkAccessManager);
+ QNetworkReply *reply = qobject_cast<QNetworkReply *>(q->sender());
+ if (reply)
+ emit q->encrypted(reply);
+#endif
+}
+
void QNetworkAccessManagerPrivate::_q_replySslErrors(const QList<QSslError> &errors)
{
#ifndef QT_NO_SSL
@@ -1151,6 +1192,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<QSslError>)), SLOT(_q_replySslErrors(QList<QSslError>)));
#endif
#ifndef QT_NO_BEARERMANAGEMENT
diff --git a/src/network/access/qnetworkaccessmanager.h b/src/network/access/qnetworkaccessmanager.h
index af5f6933a4..826c8e47d7 100644
--- a/src/network/access/qnetworkaccessmanager.h
+++ b/src/network/access/qnetworkaccessmanager.h
@@ -44,8 +44,6 @@
#include <QtCore/QObject>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -141,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<QSslError> &errors);
#endif
@@ -161,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<QSslError>))
#ifndef QT_NO_BEARERMANAGEMENT
Q_PRIVATE_SLOT(d_func(), void _q_networkSessionClosed())
@@ -170,6 +170,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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<QSslError> &errors);
QNetworkReply *postProcess(QNetworkReply *reply);
void createCookieJar() const;
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 <QtCore/QMetaType>
#include <QtCore/QObject>
-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 <QtCore/QObject>
#include <QtCore/QUrl>
-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 <QtNetwork/qabstractnetworkcache.h>
-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.cpp b/src/network/access/qnetworkreply.cpp
index fd3b7760cb..dc42adc612 100644
--- a/src/network/access/qnetworkreply.cpp
+++ b/src/network/access/qnetworkreply.cpp
@@ -195,6 +195,31 @@ QNetworkReplyPrivate::QNetworkReplyPrivate()
*/
/*!
+ \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<QSslError> &errors)
This signal is emitted if the SSL/TLS session encountered errors
diff --git a/src/network/access/qnetworkreply.h b/src/network/access/qnetworkreply.h
index 8e770bc96b..a7db2d189c 100644
--- a/src/network/access/qnetworkreply.h
+++ b/src/network/access/qnetworkreply.h
@@ -49,8 +49,6 @@
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkAccessManager>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -150,6 +148,7 @@ Q_SIGNALS:
void finished();
void error(QNetworkReply::NetworkError);
#ifndef QT_NO_SSL
+ void encrypted();
void sslErrors(const QList<QSslError> &errors);
#endif
@@ -182,6 +181,4 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QNetworkReply::NetworkError)
-QT_END_HEADER
-
#endif
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/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp
index 1520816e8d..c04421e5c7 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;
@@ -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<QSslError>,bool*,QList<QSslError>*)),
q, SLOT(replySslErrors(QList<QSslError>,bool*,QList<QSslError>*)),
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<QSslError> &list, bool *ignoreAll, QList<QSslError> *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<QSslError> &, bool *, QList<QSslError> *))
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<QSslError> &, bool *, QList<QSslError> *);
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<QSslError> &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<QSslError> &errors);
QNetworkAccessBackend *backend;
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 <QtCore/QUrl>
#include <QtCore/QVariant>
-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.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/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/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);
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 <QtCore/qlist.h>
#include <QtCore/qmetatype.h>
-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.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.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 <QtCore/qshareddata.h>
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/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/kernel.pri b/src/network/kernel/kernel.pri
index 57df8c8bc8..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
}
@@ -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
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/network/kernel/qauthenticator.h b/src/network/kernel/qauthenticator.h
index 7d199d1dce..4d96104bc0 100644
--- a/src/network/kernel/qauthenticator.h
+++ b/src/network/kernel/qauthenticator.h
@@ -45,8 +45,6 @@
#include <QtCore/qstring.h>
#include <QtCore/qvariant.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -64,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);
@@ -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 <QtCore/qsharedpointer.h>
#include <QtCore/qstring.h>
-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.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/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.cpp b/src/network/kernel/qhostinfo.cpp
index 6de83c3754..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;
@@ -699,8 +706,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;
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 <QtCore/qscopedpointer.h>
#include <QtNetwork/qhostaddress.h>
-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/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/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_windows.h>
-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..53d5d6e664 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
@@ -100,7 +98,7 @@ public:
CanMulticast = 0x20
};
Q_DECLARE_FLAGS(InterfaceFlags, InterfaceFlag)
-
+
QNetworkInterface();
QNetworkInterface(const QNetworkInterface &other);
QNetworkInterface &operator=(const QNetworkInterface &other);
@@ -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/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp
index 46eeb46f98..0ec9554c82 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
@@ -328,9 +328,9 @@ static QList<QNetworkInterfacePrivate *> 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<QHostAddress, QHostAddress> ipv4Netmasks()
IP_ADAPTER_INFO staticBuf[2]; // 2 is arbitrary
PIP_ADAPTER_INFO pAdapter = staticBuf;
ULONG bufSize = sizeof staticBuf;
- QHash<QHostAddress, QHostAddress> ipv4netmasks;
+ QHash<QHostAddress, QHostAddress> 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/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index 54229295bb..a38655d244 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.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/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<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkProxyQuery &query)
{
- QNetworkProxy proxy;
+ if (query.url().scheme() == QLatin1String("file")
+ || query.url().scheme() == QLatin1String("qrc"))
+ return QList<QNetworkProxy>() << 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(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<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro
return QList<QNetworkProxy>() << QNetworkProxy(QNetworkProxy::NoProxy);
}
+ QNetworkProxy proxy;
+
QString protocol = query.protocolTag();
if (protocol.startsWith(QLatin1String("http"), Qt::CaseInsensitive)) { // http, https
proxy.setType((QNetworkProxy::HttpProxy));
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<QNetworkProxy> 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<CFDataRef> pacData;
QCFType<CFURLRef> pacUrl = CFURLCreateWithString(kCFAllocatorDefault, cfPacLocation, NULL);
@@ -275,9 +274,7 @@ QList<QNetworkProxy> 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/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 <QtCore/qstring.h>
#include <QtCore/qiodevice.h>
-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 <QtCore/qdebug.h>
#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 <QtNetwork/qabstractsocket.h>
-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/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/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 e1ee174608..427dab1def 100644
--- a/src/network/socket/qlocalsocket.h
+++ b/src/network/socket/qlocalsocket.h
@@ -45,8 +45,6 @@
#include <QtCore/qiodevice.h>
#include <QtNetwork/qabstractsocket.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -86,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;
@@ -97,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();
@@ -152,6 +153,4 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug, QLocalSocket::LocalSocketState);
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QLOCALSOCKET_H
diff --git a/src/network/socket/qlocalsocket_tcp.cpp b/src/network/socket/qlocalsocket_tcp.cpp
index cbae8d58ff..edde5a4687 100644
--- a/src/network/socket/qlocalsocket_tcp.cpp
+++ b/src/network/socket/qlocalsocket_tcp.cpp
@@ -214,29 +214,30 @@ 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) {
+ setErrorString(tr("Trying to connect while connection is in progress"));
+ emit error(QLocalSocket::OperationError);
+ 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 +245,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
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/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/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 <QtNetwork/qabstractsocket.h>
#include <QtNetwork/qhostaddress.h>
-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.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/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 <QtNetwork/qabstractsocket.h>
#include <QtCore/qvariant.h>
-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 <QtNetwork/qabstractsocket.h>
#include <QtNetwork/qhostaddress.h>
-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.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/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 <QtCore/qglobal.h>
#include <QtCore/QFlags>
-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 <QtCore/qmap.h>
#include <QtNetwork/qssl.h>
-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 <QtCore/qstring.h>
#include <QtCore/qvariant.h>
-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.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/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 <QtCore/qscopedpointer.h>
#include <QtNetwork/qssl.h>
-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.cpp b/src/network/ssl/qsslconfiguration.cpp
index 0ae67b3c1f..afbd4fac77 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 &&
@@ -313,6 +313,45 @@ void QSslConfiguration::setPeerVerifyDepth(int depth)
}
/*!
+ Returns the certificate chain to be presented to the peer during
+ the SSL handshake process.
+
+ \sa localCertificate()
+ \since 5.1
+*/
+QList<QSslCertificate> 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<QSslCertificate> &localChain)
+{
+ d->localCertificateChain = localChain;
+}
+
+/*!
Returns the certificate to be presented to the peer during the SSL
handshake process.
@@ -320,7 +359,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 +382,8 @@ QSslCertificate QSslConfiguration::localCertificate() const
*/
void QSslConfiguration::setLocalCertificate(const QSslCertificate &certificate)
{
- d->localCertificate = certificate;
+ d->localCertificateChain = QList<QSslCertificate>();
+ d->localCertificateChain += certificate;
}
/*!
@@ -584,4 +626,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 ae6e225ce5..0000382ed5 100644
--- a/src/network/ssl/qsslconfiguration.h
+++ b/src/network/ssl/qsslconfiguration.h
@@ -61,8 +61,6 @@
#include <QtNetwork/qsslsocket.h>
#include <QtNetwork/qssl.h>
-QT_BEGIN_HEADER
-
#ifndef QT_NO_SSL
QT_BEGIN_NAMESPACE
@@ -101,6 +99,9 @@ public:
void setPeerVerifyDepth(int depth);
// Certificate & cipher configuration
+ QList<QSslCertificate> localCertificateChain() const;
+ void setLocalCertificateChain(const QList<QSslCertificate> &localChain);
+
QSslCertificate localCertificate() const;
void setLocalCertificate(const QSslCertificate &certificate);
@@ -129,6 +130,8 @@ public:
private:
friend class QSslSocket;
friend class QSslConfigurationPrivate;
+ friend class QSslSocketBackendPrivate;
+ friend class QSslContext;
QSslConfiguration(QSslConfigurationPrivate *dd);
QSharedDataPointer<QSslConfigurationPrivate> d;
};
@@ -141,6 +144,4 @@ Q_DECLARE_METATYPE(QSslConfiguration)
#endif // QT_NO_SSL
-QT_END_HEADER
-
#endif
diff --git a/src/network/ssl/qsslconfiguration_p.h b/src/network/ssl/qsslconfiguration_p.h
index 30f1ed66f9..54b7264d3d 100644
--- a/src/network/ssl/qsslconfiguration_p.h
+++ b/src/network/ssl/qsslconfiguration_p.h
@@ -84,12 +84,14 @@ public:
peerVerifyMode(QSslSocket::AutoVerifyPeer),
peerVerifyDepth(0),
allowRootCertOnDemandLoading(true),
+ peerSessionShared(false),
sslOptions(QSslConfigurationPrivate::defaultSslOptions)
{ }
QSslCertificate peerCertificate;
QList<QSslCertificate> peerCertificateChain;
- QSslCertificate localCertificate;
+
+ QList<QSslCertificate> localCertificateChain;
QSslKey privateKey;
QSslCipher sessionCipher;
@@ -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..22ad42116b
--- /dev/null
+++ b/src/network/ssl/qsslcontext.cpp
@@ -0,0 +1,309 @@
+/****************************************************************************
+**
+** 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 <QtNetwork/qsslsocket.h>
+#include <QtCore/qmutex.h>
+
+#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<QSslCipher> 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<QSslCertificate> 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());
+ }
+ }
+
+ // now add the expired certs
+ foreach (const QSslCertificate &caCertificate, expiredCerts) {
+ q_X509_STORE_add_cert(sslContext->ctx->cert_store, reinterpret_cast<X509 *>(caCertificate.handle()));
+ }
+
+ if (QSslSocketPrivate::s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) {
+ // tell OpenSSL the directories where to look up the root certs on demand
+ QList<QByteArray> 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<EVP_PKEY *>(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<RSA *>(configuration.d->privateKey.handle()));
+ else
+ q_EVP_PKEY_set1_DSA(sslContext->pkey, reinterpret_cast<DSA *>(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;
+ }
+
+ // 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<X509 *>(cert.handle())));
+ }
+ }
+
+ // 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 <QtCore/qvariant.h>
+#include <QtNetwork/qsslcertificate.h>
+#include <QtNetwork/qsslconfiguration.h>
+#include <openssl/ssl.h>
+
+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/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 847a48cbc1..73549ce648 100644
--- a/src/network/ssl/qsslerror.h
+++ b/src/network/ssl/qsslerror.h
@@ -46,8 +46,6 @@
#include <QtCore/qvariant.h>
#include <QtNetwork/qsslcertificate.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -106,7 +104,7 @@ public:
SslError error() const;
QString errorString() const;
QSslCertificate certificate() const;
-
+
private:
QScopedPointer<QSslErrorPrivate> d;
};
@@ -126,6 +124,4 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QList<QSslError>)
#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 <QtCore/qsharedpointer.h>
#include <QtNetwork/qssl.h>
-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.cpp b/src/network/ssl/qsslsocket.cpp
index f0c3f40a28..a8bf8f83b8 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -267,7 +267,7 @@
/*!
\fn void QSslSocket::sslErrors(const QList<QSslError> &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)
{
@@ -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();
@@ -912,6 +912,32 @@ void QSslSocket::setSslConfiguration(const QSslConfiguration &configuration)
}
/*!
+ 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<QSslCertificate> &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<QSslCertificate> 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
peer. It is used together with the private key; if you set the local
@@ -926,23 +952,24 @@ void QSslSocket::setSslConfiguration(const QSslConfiguration &configuration)
void QSslSocket::setLocalCertificate(const QSslCertificate &certificate)
{
Q_D(QSslSocket);
- d->configuration.localCertificate = certificate;
+ d->configuration.localCertificateChain = QList<QSslCertificate>();
+ d->configuration.localCertificateChain += 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,
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,14 +981,16 @@ 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];
}
/*!
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
@@ -1073,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,
@@ -1681,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()
@@ -2057,7 +2086,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;
@@ -2410,6 +2439,23 @@ QList<QByteArray> QSslSocketPrivate::unixRootCertDirectories()
<< "/opt/openssl/certs/"; // HP-UX
}
+/*!
+ \internal
+*/
+void QSslSocketPrivate::checkSettingSslContext(QSslSocket* socket, QSharedPointer<QSslContext> sslContext)
+{
+ if (socket->d_func()->sslContextPointer.isNull())
+ socket->d_func()->sslContextPointer = sslContext;
+}
+
+/*!
+ \internal
+*/
+QSharedPointer<QSslContext> QSslSocketPrivate::sslContext(QSslSocket *socket)
+{
+ return (socket) ? socket->d_func()->sslContextPointer : QSharedPointer<QSslContext>();
+}
+
QT_END_NAMESPACE
#include "moc_qsslsocket.cpp"
diff --git a/src/network/ssl/qsslsocket.h b/src/network/ssl/qsslsocket.h
index 929e437554..d89933efda 100644
--- a/src/network/ssl/qsslsocket.h
+++ b/src/network/ssl/qsslsocket.h
@@ -50,8 +50,6 @@
# include <QtNetwork/qsslerror.h>
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -133,6 +131,9 @@ public:
void setSslConfiguration(const QSslConfiguration &config);
// Certificate & cipher accessors.
+ void setLocalCertificateChain(const QList<QSslCertificate> &localChain);
+ QList<QSslCertificate> localCertificateChain() const;
+
void setLocalCertificate(const QSslCertificate &certificate);
void setLocalCertificate(const QString &fileName, QSsl::EncodingFormat format = QSsl::Pem);
QSslCertificate localCertificate() const;
@@ -223,6 +224,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index f846bf2d8b..e8f8b294c9 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -156,6 +156,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)
{
@@ -175,8 +188,6 @@ static unsigned long id_function()
QSslSocketBackendPrivate::QSslSocketBackendPrivate()
: ssl(0),
- ctx(0),
- pkey(0),
readBio(0),
writeBio(0),
session(0)
@@ -240,7 +251,8 @@ struct QSslErrorList
QList<QPair<int, int> > 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.
@@ -311,191 +323,21 @@ bool QSslSocketBackendPrivate::initSslContext()
{
Q_Q(QSslSocket);
- // Create and initialize SSL context. Accept SSLv2, SSLv3 and TLSv1_0.
- bool client = (mode == QSslSocket::SslClientMode);
+ // If no external context was set (e.g. bei QHttpNetworkConnection) we will create a default context
+ if (!sslContextPointer)
+ sslContextPointer = QSharedPointer<QSslContext>(
+ QSslContext::fromConfiguration(mode, QSslConfiguration(&configuration), allowRootCertOnDemandLoading));
- 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<QSslCipher> 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 (!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<QSslCertificate> 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<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(ctx->cert_store, reinterpret_cast<X509 *>(caCertificate.handle()));
- }
- }
-
- if (s_loadRootCertsOnDemand && allowRootCertOnDemandLoading) {
- // tell OpenSSL the directories where to look up the root certs on demand
- QList<QByteArray> 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<X509 *>(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<EVP_PKEY *>(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<RSA *>(configuration.privateKey.handle()));
- else
- q_EVP_PKEY_set1_DSA(pkey, reinterpret_cast<DSA *>(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);
@@ -510,7 +352,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())
@@ -527,7 +369,6 @@ init_context:
#endif
// Clear the session.
- q_SSL_clear(ssl);
errorList.clear();
// Initialize memory BIOs for encryption and decryption.
@@ -557,14 +398,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();
}
/*!
@@ -847,10 +681,19 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
}
#elif defined(Q_OS_UNIX)
QSet<QString> certFiles;
+# ifdef Q_OS_ANDROID
+ QList<QByteArray> directories;
+ directories << qgetenv("MINISTRO_SSL_CERTS_PATH"); // Set by Ministro
+# else
QList<QByteArray> 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)));
@@ -863,10 +706,16 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
}
QSetIterator<QString> 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";
@@ -1102,7 +951,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)
@@ -1308,7 +1157,6 @@ bool QSslSocketBackendPrivate::startHandshake()
}
}
#endif
-
if (!checkSslErrors())
return false;
} else {
@@ -1532,7 +1380,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
@@ -1552,6 +1400,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) {
@@ -1571,19 +1428,6 @@ QList<QSslCertificate> 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);
@@ -1675,17 +1519,9 @@ QList<QSslError> QSslSocketBackendPrivate::verify(QList<QSslCertificate> 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<X509 *>(caCertificate.handle()));
- }
+ foreach (const QSslCertificate &caCertificate, expiredCerts) {
+ q_X509_STORE_add_cert(certStore, reinterpret_cast<X509 *>(caCertificate.handle()));
}
QMutexLocker sslErrorListMutexLocker(&_q_sslErrorList()->mutex);
diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h
index d6675197b4..c8b23e6cad 100644
--- a/src/network/ssl/qsslsocket_openssl_p.h
+++ b/src/network/ssl/qsslsocket_openssl_p.h
@@ -75,7 +75,10 @@
#if defined(OCSP_RESPONSE)
#undef OCSP_RESPONSE
#endif
+#if defined(X509_NAME)
+#undef X509_NAME
#endif
+#endif // Q_OS_WIN
#include <openssl/asn1.h>
#include <openssl/bio.h>
@@ -115,8 +118,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 9f271f863a..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 <QtCore/qdir.h>
#endif
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID_NO_SDK)
#include <link.h>
#endif
@@ -245,6 +245,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, 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)
@@ -379,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))
@@ -410,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<QString> loadedPaths;
dl_iterate_phdr(dlIterateCallback, &loadedPaths);
@@ -457,28 +463,46 @@ static QStringList findAllLibCrypto()
# endif
#ifdef Q_OS_WIN
-static QPair<QSystemLibrary*, QSystemLibrary*> loadOpenSslWin32()
+static bool tryToLoadOpenSslWin32Library(QLatin1String ssleay32LibName, QLatin1String libeay32LibName, QPair<QSystemLibrary*, QSystemLibrary*> &pair)
{
- QPair<QSystemLibrary*,QSystemLibrary*> 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<QSystemLibrary*, QSystemLibrary*> loadOpenSslWin32()
+{
+ QPair<QSystemLibrary*,QSystemLibrary*> 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
@@ -699,6 +723,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 ccd9d3cfb9..62648e3e37 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -347,6 +347,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(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 <private/qtcpsocket_p.h>
#include "qsslkey.h"
#include "qsslconfiguration_p.h"
+#include <private/qsslcontext_p.h>
#include <QtCore/qstringlist.h>
@@ -114,6 +115,7 @@ public:
QSslConfigurationPrivate configuration;
QList<QSslError> sslErrors;
+ QSharedPointer<QSslContext> 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<QSslContext>);
+ static QSharedPointer<QSslContext> 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<QByteArray> 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<QByteArray> 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:
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/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 <QGLShaderProgram>
-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 <private/qgl_p.h>
#include <private/qglcustomshaderstage_p.h>
-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 <syslog.h>
#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/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index 8196c4def4..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
}
@@ -626,6 +623,12 @@ bool QGL2PaintEngineEx::isNativePaintingActive() const {
return d->nativePaintingActive;
}
+bool QGL2PaintEngineEx::shouldDrawCachedGlyphs(QFontEngine *fontEngine, const QTransform &t) const
+{
+ // Don't try to cache vastly transformed fonts
+ return t.type() < QTransform::TxProject && QPaintEngineEx::shouldDrawCachedGlyphs(fontEngine, t);
+}
+
void QGL2PaintEngineExPrivate::transferMode(EngineMode newMode)
{
if (newMode == mode)
@@ -727,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
@@ -754,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);
@@ -767,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);
@@ -993,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);
@@ -1076,6 +1079,20 @@ void QGL2PaintEngineExPrivate::resetClipIfNeeded()
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
}
+bool QGL2PaintEngineExPrivate::prepareForCachedGlyphDraw(const QFontEngineGlyphCache &cache)
+{
+ 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);
+ transform.scale(cache.transform().m11(), cache.transform().m22());
+
+ return ret;
+}
+
bool QGL2PaintEngineExPrivate::prepareForDraw(bool srcPixelsAreOpaque)
{
if (brushTextureDirty && mode != ImageDrawingMode && mode != ImageArrayDrawingMode)
@@ -1369,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);
@@ -1411,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
@@ -1439,11 +1456,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;
@@ -1472,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());
@@ -1497,13 +1510,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 +1525,7 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
}
}
- if (drawCached) {
+ if (shouldDrawCachedGlyphs(ti.fontEngine, s->matrix)) {
QVarLengthArray<QFixedPoint> positions;
QVarLengthArray<glyph_t> glyphs;
QTransform matrix = QTransform::fromTranslate(p.x(), p.y());
@@ -1578,11 +1584,19 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
void *cacheKey = const_cast<QGLContext *>(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 = 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 =
- (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;
}
@@ -1674,8 +1688,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));
@@ -1748,9 +1762,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;
@@ -1758,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.
@@ -1771,11 +1785,11 @@ 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);
- 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);
@@ -1795,7 +1809,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);
}
@@ -1804,13 +1818,13 @@ 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;
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();
@@ -1917,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);
@@ -1990,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);
@@ -2031,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 7835885c47..b0517fd083 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
@@ -62,6 +62,7 @@
#include <private/qfontengine_p.h>
#include <private/qdatabuffer_p.h>
#include <private/qtriangulatingstroker_p.h>
+#include <private/qopenglextensions_p.h>
enum EngineMode {
ImageDrawingMode,
@@ -155,7 +156,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)
};
@@ -190,7 +192,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();
@@ -226,6 +228,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);
@@ -254,6 +257,8 @@ public:
EngineMode mode;
QFontEngineGlyphCache::Type glyphCacheType;
+ QOpenGLExtensions funcs;
+
// Dirty flags
bool matrixDirty; // Implies matrix uniforms are also dirty
bool compositionModeDirty;
@@ -315,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 <private/qgl_p.h>
#include <qglshaderprogram.h>
#include <qglframebufferobject.h>
+#include <qopenglfunctions.h>
// #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..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
@@ -23,7 +26,6 @@ HEADERS += qgl.h \
qglpixelbuffer_p.h \
qglframebufferobject.h \
qglframebufferobject_p.h \
- qglextensions_p.h \
qglpaintdevice_p.h \
qglbuffer.h \
qtopenglglobal.h
@@ -33,7 +35,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 71f1bd2b54..def0470622 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -59,6 +59,7 @@
#include <qglpixelbuffer.h>
#include <qglframebufferobject.h>
+#include <private/qopenglextensions_p.h>
#include <private/qimage_p.h>
#include <qpa/qplatformpixmap.h>
@@ -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<QOpenGLExtensions *>(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);
}
}
@@ -2041,11 +2087,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);
@@ -2134,23 +2175,6 @@ static void convertToGLFormatHelper(QImage &dst, const QImage &img, GLenum textu
}
}
-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)
@@ -2238,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())))
{
@@ -2260,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))
{
@@ -2284,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;
@@ -4674,192 +4698,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<const char *>(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<const char *>(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 *>(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()
*/
@@ -5046,21 +4884,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))
@@ -5087,7 +4910,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();
}
@@ -5139,7 +4962,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;
@@ -5197,14 +5020,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();
}
@@ -5250,7 +5071,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 2fc21cb501..72fe7b8da6 100644
--- a/src/opengl/qgl.h
+++ b/src/opengl/qgl.h
@@ -53,7 +53,6 @@
#include <QtGui/QSurfaceFormat>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -344,7 +343,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;
@@ -525,7 +523,5 @@ inline bool QGLFormat::sampleBuffers() const
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QT_NO_OPENGL
#endif // QGL_H
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 5fd870beee..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 <QtGui/QOpenGLContext>
-#include <QtOpenGL/private/qglextensions_p.h>
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<const QGLContext *> 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<const QGLContext *> 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
@@ -265,7 +231,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();
@@ -289,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;
@@ -307,7 +271,6 @@ public:
QColor transpColor;
QGLContext *q_ptr;
QGLFormat::OpenGLVersionFlags version_flags;
- QGLExtensions::Extensions extension_flags;
QGLContextGroup *group;
GLint max_texture_size;
@@ -323,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.
@@ -511,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
@@ -575,35 +537,6 @@ QGLSharedResourceGuardBase *createSharedResourceGuard(QGLContext *context, GLuin
return new QGLSharedResourceGuard<Func>(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<int> 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 <QtOpenGL/qgl.h>
#include <QtOpenGL/private/qgl_p.h>
-#include <QtOpenGL/private/qglextensions_p.h>
+#include <private/qopenglextensions_p.h>
#include <QtCore/qatomic.h>
#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 *>(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<QGLContext *>(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/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 <QtCore/qscopedpointer.h>
#include <QtOpenGL/qgl.h>
-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 <QtCore/qvector.h>
#include <QtOpenGL/qtopenglglobal.h>
-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/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 <qglframebufferobject.h>
-
-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 <QtCore/qglobal.h>
-
-#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 42d1280bb2..15880108f3 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 *>(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 *>(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<QWindow *>(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.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 <QtOpenGL/qgl.h>
#include <QtGui/qpaintdevice.h>
-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/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 <qglframebufferobject.h>
#include <private/qglpaintdevice_p.h>
#include <private/qgl_p.h>
+#include <private/qopenglextensions_p.h>
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 <private/qopengl_p.h>
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/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 <QtOpenGL/qgl.h>
#include <QtGui/qopenglcontext.h>
-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 <QtOpenGL/qgl.h>
#include <QtGui/qpaintdevice.h>
-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.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 <private/qopenglextensions_p.h>
#include "qgl_p.h"
#include <QtCore/private/qobject_p.h>
#include <QtCore/qdebug.h>
@@ -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 *>(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<QGLShader *> shaders;
QList<QGLShader *> 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 *>(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<const GLfloat *>(&value));
+ d->glfuncs->glVertexAttrib2fv(location, reinterpret_cast<const GLfloat *>(&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<const GLfloat *>(&value));
+ d->glfuncs->glVertexAttrib3fv(location, reinterpret_cast<const GLfloat *>(&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<const GLfloat *>(&value));
+ d->glfuncs->glVertexAttrib4fv(location, reinterpret_cast<const GLfloat *>(&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<const void *>(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<const GLfloat *>(&value));
+ d->glfuncs->glUniform2fv(location, 1, reinterpret_cast<const GLfloat *>(&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<const GLfloat *>(&value));
+ d->glfuncs->glUniform3fv(location, 1, reinterpret_cast<const GLfloat *>(&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<const GLfloat *>(&value));
+ d->glfuncs->glUniform4fv(location, 1, reinterpret_cast<const GLfloat *>(&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<const GLint *>(values));
+ d->glfuncs->glUniform1iv(location, count, reinterpret_cast<const GLint *>(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<const GLfloat *>(values));
+ d->glfuncs->glUniform2fv(location, count, reinterpret_cast<const GLfloat *>(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<const GLfloat *>(values));
+ d->glfuncs->glUniform3fv(location, count, reinterpret_cast<const GLfloat *>(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<const GLfloat *>(values));
+ d->glfuncs->glUniform4fv(location, count, reinterpret_cast<const GLfloat *>(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<const GLfloat *> \
- (values[0].constData()); \
- if (func) \
- func(location, count, GL_FALSE, data); \
- else \
- colfunc(location, count * cols, data); \
- } else { \
- QVarLengthArray<GLfloat> 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<QGLContext *>(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<QGLContext *>(context));
+ QOpenGLFunctions functions(context->contextHandle());
+ bool resolved = functions.hasOpenGLFeature(QOpenGLFunctions::Shaders);
if (!resolved)
return false;
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 <QtGui/qvector4d.h>
#include <QtGui/qmatrix4x4.h>
-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 <QtWidgets/qgraphicseffect.h>
#include <QtOpenGL/qtopenglglobal.h>
-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 <QtCore/qglobal.h>
-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/openglextensions/openglextensions.pro b/src/openglextensions/openglextensions.pro
new file mode 100644
index 0000000000..5ab750bee8
--- /dev/null
+++ b/src/openglextensions/openglextensions.pro
@@ -0,0 +1,15 @@
+TARGET = QtOpenGLExtensions
+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
+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 <QtGui/qopenglcontext.h>
+
+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<void (QOPENGLF_APIENTRYP)(GLuint )>(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<GLuint (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLenum *, GLuint *, GLuint *, GLsizei *, GLchar *)>(context->getProcAddress("glGetDebugMessageLogAMD"));
+ d->DebugMessageCallbackAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLDEBUGPROCAMD , GLvoid *)>(context->getProcAddress("glDebugMessageCallbackAMD"));
+ d->DebugMessageInsertAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLsizei , const GLchar *)>(context->getProcAddress("glDebugMessageInsertAMD"));
+ d->DebugMessageEnableAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , const GLuint *, GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum )>(context->getProcAddress("glBlendEquationSeparateIndexedAMD"));
+ d->BlendEquationIndexedAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glBlendEquationIndexedAMD"));
+ d->BlendFuncSeparateIndexedAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLenum , GLenum )>(context->getProcAddress("glBlendFuncSeparateIndexedAMD"));
+ d->BlendFuncIndexedAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLvoid *, GLsizei , GLsizei )>(context->getProcAddress("glMultiDrawElementsIndirectAMD"));
+ d->MultiDrawArraysIndirectAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLvoid *, GLsizei , GLsizei )>(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<GLboolean (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glIsNameAMD"));
+ d->DeleteNamesAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLuint *)>(context->getProcAddress("glDeleteNamesAMD"));
+ d->GenNamesAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLuint *, GLint *)>(context->getProcAddress("glGetPerfMonitorCounterDataAMD"));
+ d->EndPerfMonitorAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glEndPerfMonitorAMD"));
+ d->BeginPerfMonitorAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glBeginPerfMonitorAMD"));
+ d->SelectPerfMonitorCountersAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLboolean , GLuint , GLint , GLuint *)>(context->getProcAddress("glSelectPerfMonitorCountersAMD"));
+ d->DeletePerfMonitorsAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glDeletePerfMonitorsAMD"));
+ d->GenPerfMonitorsAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenPerfMonitorsAMD"));
+ d->GetPerfMonitorCounterInfoAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLvoid *)>(context->getProcAddress("glGetPerfMonitorCounterInfoAMD"));
+ d->GetPerfMonitorCounterStringAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetPerfMonitorCounterStringAMD"));
+ d->GetPerfMonitorGroupStringAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetPerfMonitorGroupStringAMD"));
+ d->GetPerfMonitorCountersAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint *, GLint *, GLsizei , GLuint *)>(context->getProcAddress("glGetPerfMonitorCountersAMD"));
+ d->GetPerfMonitorGroupsAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint *, GLsizei , GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLsizei , GLsizei , GLsizei , GLbitfield )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glTessellationModeAMD"));
+ d->TessellationFactorAMD = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , const GLint *, const GLsizei *, GLsizei )>(context->getProcAddress("glMultiDrawRangeElementArrayAPPLE"));
+ d->MultiDrawElementArrayAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *, const GLsizei *, GLsizei )>(context->getProcAddress("glMultiDrawElementArrayAPPLE"));
+ d->DrawRangeElementArrayAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLint , GLsizei )>(context->getProcAddress("glDrawRangeElementArrayAPPLE"));
+ d->DrawElementArrayAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei )>(context->getProcAddress("glDrawElementArrayAPPLE"));
+ d->ElementPointerAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glFinishObjectAPPLE"));
+ d->TestObjectAPPLE = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTestObjectAPPLE"));
+ d->FinishFenceAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glFinishFenceAPPLE"));
+ d->TestFenceAPPLE = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glTestFenceAPPLE"));
+ d->IsFenceAPPLE = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsFenceAPPLE"));
+ d->SetFenceAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glSetFenceAPPLE"));
+ d->DeleteFencesAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteFencesAPPLE"));
+ d->GenFencesAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLintptr , GLsizeiptr )>(context->getProcAddress("glFlushMappedBufferRangeAPPLE"));
+ d->BufferParameteriAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetObjectParameterivAPPLE"));
+ d->ObjectUnpurgeableAPPLE = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum )>(context->getProcAddress("glObjectUnpurgeableAPPLE"));
+ d->ObjectPurgeableAPPLE = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLvoid* *)>(context->getProcAddress("glGetTexParameterPointervAPPLE"));
+ d->TextureRangeAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(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<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsVertexArrayAPPLE"));
+ d->GenVertexArraysAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenVertexArraysAPPLE"));
+ d->DeleteVertexArraysAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteVertexArraysAPPLE"));
+ d->BindVertexArrayAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glVertexArrayParameteriAPPLE"));
+ d->FlushVertexArrayRangeAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLvoid *)>(context->getProcAddress("glFlushVertexArrayRangeAPPLE"));
+ d->VertexArrayRangeAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLfloat , GLfloat , GLint , GLint , GLfloat , GLfloat , GLint , GLint , const GLfloat *)>(context->getProcAddress("glMapVertexAttrib2fAPPLE"));
+ d->MapVertexAttrib2dAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLdouble , GLdouble , GLint , GLint , GLdouble , GLdouble , GLint , GLint , const GLdouble *)>(context->getProcAddress("glMapVertexAttrib2dAPPLE"));
+ d->MapVertexAttrib1fAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLfloat , GLfloat , GLint , GLint , const GLfloat *)>(context->getProcAddress("glMapVertexAttrib1fAPPLE"));
+ d->MapVertexAttrib1dAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLdouble , GLdouble , GLint , GLint , const GLdouble *)>(context->getProcAddress("glMapVertexAttrib1dAPPLE"));
+ d->IsVertexAttribEnabledAPPLE = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glIsVertexAttribEnabledAPPLE"));
+ d->DisableVertexAttribAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glDisableVertexAttribAPPLE"));
+ d->EnableVertexAttribAPPLE = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glClearDepthf"));
+ d->DepthRangef = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glDepthRangef"));
+ d->GetShaderPrecisionFormat = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *, GLint *)>(context->getProcAddress("glGetShaderPrecisionFormat"));
+ d->ShaderBinary = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, GLenum , const GLvoid *, GLsizei )>(context->getProcAddress("glShaderBinary"));
+ d->ReleaseShaderCompiler = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const void *, GLsizei , GLint , GLuint )>(context->getProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"));
+ d->DrawElementsInstancedBaseInstance = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const void *, GLsizei , GLuint )>(context->getProcAddress("glDrawElementsInstancedBaseInstance"));
+ d->DrawArraysInstancedBaseInstance = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei , GLsizei , GLuint )>(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<GLint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetFragDataIndex"));
+ d->BindFragDataLocationIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , const GLchar *)>(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<GLsync (QOPENGLF_APIENTRYP)(struct _cl_context * , struct _cl_event * , GLbitfield )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLintptr , GLsizeiptr , GLenum , GLenum , const void *)>(context->getProcAddress("glClearBufferSubData"));
+ d->ClearBufferData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum , const void *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLintptr )>(context->getProcAddress("glDispatchComputeIndirect"));
+ d->DispatchCompute = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLintptr , GLintptr , GLsizeiptr )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei )>(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<GLuint (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *)>(context->getProcAddress("glGetDebugMessageLogARB"));
+ d->DebugMessageCallbackARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLDEBUGPROCARB , const GLvoid *)>(context->getProcAddress("glDebugMessageCallbackARB"));
+ d->DebugMessageInsertARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLenum , GLsizei , const GLchar *)>(context->getProcAddress("glDebugMessageInsertARB"));
+ d->DebugMessageControlARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , const GLuint *, GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLsizei , const GLenum *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLenum , GLenum )>(context->getProcAddress("glBlendFuncSeparateiARB"));
+ d->BlendFunciARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum )>(context->getProcAddress("glBlendFunciARB"));
+ d->BlendEquationSeparateiARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum )>(context->getProcAddress("glBlendEquationSeparateiARB"));
+ d->BlendEquationiARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLsizei *, GLenum , const GLvoid* const *, GLsizei , const GLint *)>(context->getProcAddress("glMultiDrawElementsBaseVertex"));
+ d->DrawElementsInstancedBaseVertex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *, GLsizei , GLint )>(context->getProcAddress("glDrawElementsInstancedBaseVertex"));
+ d->DrawRangeElementsBaseVertex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei , GLenum , const GLvoid *, GLint )>(context->getProcAddress("glDrawRangeElementsBaseVertex"));
+ d->DrawElementsBaseVertex = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *, GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glDrawElementsIndirect"));
+ d->DrawArraysIndirect = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *, GLsizei )>(context->getProcAddress("glDrawElementsInstancedARB"));
+ d->DrawArraysInstancedARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetFramebufferParameteriv"));
+ d->FramebufferParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glFramebufferTextureLayer"));
+ d->RenderbufferStorageMultisample = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glRenderbufferStorageMultisample"));
+ d->BlitFramebuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint , GLint , GLint , GLint , GLint , GLbitfield , GLenum )>(context->getProcAddress("glBlitFramebuffer"));
+ d->GenerateMipmap = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glGenerateMipmap"));
+ d->GetFramebufferAttachmentParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetFramebufferAttachmentParameteriv"));
+ d->FramebufferRenderbuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint )>(context->getProcAddress("glFramebufferRenderbuffer"));
+ d->FramebufferTexture3D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glFramebufferTexture3D"));
+ d->FramebufferTexture2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTexture2D"));
+ d->FramebufferTexture1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTexture1D"));
+ d->CheckFramebufferStatus = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glCheckFramebufferStatus"));
+ d->GenFramebuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenFramebuffers"));
+ d->DeleteFramebuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteFramebuffers"));
+ d->BindFramebuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindFramebuffer"));
+ d->IsFramebuffer = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsFramebuffer"));
+ d->GetRenderbufferParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetRenderbufferParameteriv"));
+ d->RenderbufferStorage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glRenderbufferStorage"));
+ d->GenRenderbuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenRenderbuffers"));
+ d->DeleteRenderbuffers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteRenderbuffers"));
+ d->BindRenderbuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindRenderbuffer"));
+ d->IsRenderbuffer = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint , GLenum )>(context->getProcAddress("glFramebufferTextureFaceARB"));
+ d->FramebufferTextureLayerARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glFramebufferTextureLayerARB"));
+ d->FramebufferTextureARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTextureARB"));
+ d->ProgramParameteriARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(context->getProcAddress("glProgramParameteri"));
+ d->ProgramBinary = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLvoid *, GLsizei )>(context->getProcAddress("glProgramBinary"));
+ d->GetProgramBinary = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLenum *, GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble *)>(context->getProcAddress("glGetUniformdv"));
+ d->UniformMatrix4x3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix4x3dv"));
+ d->UniformMatrix4x2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix4x2dv"));
+ d->UniformMatrix3x4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix3x4dv"));
+ d->UniformMatrix3x2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix3x2dv"));
+ d->UniformMatrix2x4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix2x4dv"));
+ d->UniformMatrix2x3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix2x3dv"));
+ d->UniformMatrix4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix4dv"));
+ d->UniformMatrix3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix3dv"));
+ d->UniformMatrix2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glUniformMatrix2dv"));
+ d->Uniform4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glUniform4dv"));
+ d->Uniform3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glUniform3dv"));
+ d->Uniform2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glUniform2dv"));
+ d->Uniform1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glUniform1dv"));
+ d->Uniform4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glUniform4d"));
+ d->Uniform3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glUniform3d"));
+ d->Uniform2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble , GLdouble )>(context->getProcAddress("glUniform2d"));
+ d->Uniform1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLdouble )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , GLint *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , GLint64 *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLenum *, GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glInvalidateSubFramebuffer"));
+ d->InvalidateFramebuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLenum *)>(context->getProcAddress("glInvalidateFramebuffer"));
+ d->InvalidateBufferData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glInvalidateBufferData"));
+ d->InvalidateBufferSubData = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress("glInvalidateBufferSubData"));
+ d->InvalidateTexImage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint )>(context->getProcAddress("glInvalidateTexImage"));
+ d->InvalidateTexSubImage = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLintptr , GLsizeiptr )>(context->getProcAddress("glFlushMappedBufferRange"));
+ d->MapBufferRange = reinterpret_cast<GLvoid* (QOPENGLF_APIENTRYP)(GLenum , GLintptr , GLsizeiptr , GLbitfield )>(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<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glMatrixIndexPointerARB"));
+ d->MatrixIndexuivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLuint *)>(context->getProcAddress("glMatrixIndexuivARB"));
+ d->MatrixIndexusvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLushort *)>(context->getProcAddress("glMatrixIndexusvARB"));
+ d->MatrixIndexubvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLubyte *)>(context->getProcAddress("glMatrixIndexubvARB"));
+ d->CurrentPaletteMatrixARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const void *, GLsizei , GLsizei )>(context->getProcAddress("glMultiDrawElementsIndirect"));
+ d->MultiDrawArraysIndirect = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const void *, GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLfloat , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glMultiTexCoord4svARB"));
+ d->MultiTexCoord4sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glMultiTexCoord4sARB"));
+ d->MultiTexCoord4ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glMultiTexCoord4ivARB"));
+ d->MultiTexCoord4iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint )>(context->getProcAddress("glMultiTexCoord4iARB"));
+ d->MultiTexCoord4fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexCoord4fvARB"));
+ d->MultiTexCoord4fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glMultiTexCoord4fARB"));
+ d->MultiTexCoord4dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexCoord4dvARB"));
+ d->MultiTexCoord4dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMultiTexCoord4dARB"));
+ d->MultiTexCoord3svARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glMultiTexCoord3svARB"));
+ d->MultiTexCoord3sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort , GLshort )>(context->getProcAddress("glMultiTexCoord3sARB"));
+ d->MultiTexCoord3ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glMultiTexCoord3ivARB"));
+ d->MultiTexCoord3iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint )>(context->getProcAddress("glMultiTexCoord3iARB"));
+ d->MultiTexCoord3fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexCoord3fvARB"));
+ d->MultiTexCoord3fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glMultiTexCoord3fARB"));
+ d->MultiTexCoord3dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexCoord3dvARB"));
+ d->MultiTexCoord3dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMultiTexCoord3dARB"));
+ d->MultiTexCoord2svARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glMultiTexCoord2svARB"));
+ d->MultiTexCoord2sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort )>(context->getProcAddress("glMultiTexCoord2sARB"));
+ d->MultiTexCoord2ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glMultiTexCoord2ivARB"));
+ d->MultiTexCoord2iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint )>(context->getProcAddress("glMultiTexCoord2iARB"));
+ d->MultiTexCoord2fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexCoord2fvARB"));
+ d->MultiTexCoord2fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat )>(context->getProcAddress("glMultiTexCoord2fARB"));
+ d->MultiTexCoord2dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexCoord2dvARB"));
+ d->MultiTexCoord2dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble )>(context->getProcAddress("glMultiTexCoord2dARB"));
+ d->MultiTexCoord1svARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glMultiTexCoord1svARB"));
+ d->MultiTexCoord1sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort )>(context->getProcAddress("glMultiTexCoord1sARB"));
+ d->MultiTexCoord1ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glMultiTexCoord1ivARB"));
+ d->MultiTexCoord1iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glMultiTexCoord1iARB"));
+ d->MultiTexCoord1fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexCoord1fvARB"));
+ d->MultiTexCoord1fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glMultiTexCoord1fARB"));
+ d->MultiTexCoord1dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexCoord1dvARB"));
+ d->MultiTexCoord1dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble )>(context->getProcAddress("glMultiTexCoord1dARB"));
+ d->ClientActiveTextureARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glClientActiveTextureARB"));
+ d->ActiveTextureARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetQueryObjectuivARB"));
+ d->GetQueryObjectivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetQueryObjectivARB"));
+ d->GetQueryivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetQueryivARB"));
+ d->EndQueryARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glEndQueryARB"));
+ d->BeginQueryARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBeginQueryARB"));
+ d->IsQueryARB = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsQueryARB"));
+ d->DeleteQueriesARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteQueriesARB"));
+ d->GenQueriesARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glPointParameterfvARB"));
+ d->PointParameterfARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(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<GLint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetProgramResourceLocationIndex"));
+ d->GetProgramResourceLocation = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetProgramResourceLocation"));
+ d->GetProgramResourceiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , const GLenum *, GLsizei , GLsizei *, GLint *)>(context->getProcAddress("glGetProgramResourceiv"));
+ d->GetProgramResourceName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetProgramResourceName"));
+ d->GetProgramResourceIndex = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetProgramResourceIndex"));
+ d->GetProgramInterfaceiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint *)>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLdouble *)>(context->getProcAddress("glGetnUniformdvARB"));
+ d->GetnUniformuivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLuint *)>(context->getProcAddress("glGetnUniformuivARB"));
+ d->GetnUniformivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLint *)>(context->getProcAddress("glGetnUniformivARB"));
+ d->GetnUniformfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLfloat *)>(context->getProcAddress("glGetnUniformfvARB"));
+ d->GetnCompressedTexImageARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei , GLvoid *)>(context->getProcAddress("glGetnCompressedTexImageARB"));
+ d->ReadnPixelsARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , GLsizei , GLvoid *)>(context->getProcAddress("glReadnPixelsARB"));
+ d->GetnTexImageARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLenum , GLsizei , GLvoid *)>(context->getProcAddress("glGetnTexImageARB"));
+ d->GetnMinmaxARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLboolean , GLenum , GLenum , GLsizei , GLvoid *)>(context->getProcAddress("glGetnMinmaxARB"));
+ d->GetnHistogramARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLboolean , GLenum , GLenum , GLsizei , GLvoid *)>(context->getProcAddress("glGetnHistogramARB"));
+ d->GetnSeparableFilterARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , GLvoid *, GLsizei , GLvoid *, GLvoid *)>(context->getProcAddress("glGetnSeparableFilterARB"));
+ d->GetnConvolutionFilterARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , GLvoid *)>(context->getProcAddress("glGetnConvolutionFilterARB"));
+ d->GetnColorTableARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , GLvoid *)>(context->getProcAddress("glGetnColorTableARB"));
+ d->GetnPolygonStippleARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLubyte *)>(context->getProcAddress("glGetnPolygonStippleARB"));
+ d->GetnPixelMapusvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLushort *)>(context->getProcAddress("glGetnPixelMapusvARB"));
+ d->GetnPixelMapuivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLuint *)>(context->getProcAddress("glGetnPixelMapuivARB"));
+ d->GetnPixelMapfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLfloat *)>(context->getProcAddress("glGetnPixelMapfvARB"));
+ d->GetnMapivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLint *)>(context->getProcAddress("glGetnMapivARB"));
+ d->GetnMapfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLfloat *)>(context->getProcAddress("glGetnMapfvARB"));
+ d->GetnMapdvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLdouble *)>(context->getProcAddress("glGetnMapdvARB"));
+ d->GetGraphicsResetStatusARB = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetSamplerParameterIuiv"));
+ d->GetSamplerParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetSamplerParameterfv"));
+ d->GetSamplerParameterIiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetSamplerParameterIiv"));
+ d->GetSamplerParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetSamplerParameteriv"));
+ d->SamplerParameterIuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLuint *)>(context->getProcAddress("glSamplerParameterIuiv"));
+ d->SamplerParameterIiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLint *)>(context->getProcAddress("glSamplerParameterIiv"));
+ d->SamplerParameterfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLfloat *)>(context->getProcAddress("glSamplerParameterfv"));
+ d->SamplerParameterf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat )>(context->getProcAddress("glSamplerParameterf"));
+ d->SamplerParameteriv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLint *)>(context->getProcAddress("glSamplerParameteriv"));
+ d->SamplerParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(context->getProcAddress("glSamplerParameteri"));
+ d->BindSampler = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glBindSampler"));
+ d->IsSampler = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsSampler"));
+ d->DeleteSamplers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteSamplers"));
+ d->GenSamplers = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetProgramPipelineInfoLog"));
+ d->ValidateProgramPipeline = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glValidateProgramPipeline"));
+ d->ProgramUniformMatrix4x3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4x3dv"));
+ d->ProgramUniformMatrix3x4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3x4dv"));
+ d->ProgramUniformMatrix4x2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4x2dv"));
+ d->ProgramUniformMatrix2x4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2x4dv"));
+ d->ProgramUniformMatrix3x2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3x2dv"));
+ d->ProgramUniformMatrix2x3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2x3dv"));
+ d->ProgramUniformMatrix4x3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4x3fv"));
+ d->ProgramUniformMatrix3x4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3x4fv"));
+ d->ProgramUniformMatrix4x2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4x2fv"));
+ d->ProgramUniformMatrix2x4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2x4fv"));
+ d->ProgramUniformMatrix3x2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3x2fv"));
+ d->ProgramUniformMatrix2x3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2x3fv"));
+ d->ProgramUniformMatrix4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4dv"));
+ d->ProgramUniformMatrix3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3dv"));
+ d->ProgramUniformMatrix2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2dv"));
+ d->ProgramUniformMatrix4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4fv"));
+ d->ProgramUniformMatrix3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3fv"));
+ d->ProgramUniformMatrix2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2fv"));
+ d->ProgramUniform4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform4uiv"));
+ d->ProgramUniform4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform4ui"));
+ d->ProgramUniform4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform4dv"));
+ d->ProgramUniform4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform4d"));
+ d->ProgramUniform4fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform4fv"));
+ d->ProgramUniform4f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform4f"));
+ d->ProgramUniform4iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform4iv"));
+ d->ProgramUniform4i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform4i"));
+ d->ProgramUniform3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform3uiv"));
+ d->ProgramUniform3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform3ui"));
+ d->ProgramUniform3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform3dv"));
+ d->ProgramUniform3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform3d"));
+ d->ProgramUniform3fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform3fv"));
+ d->ProgramUniform3f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform3f"));
+ d->ProgramUniform3iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform3iv"));
+ d->ProgramUniform3i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform3i"));
+ d->ProgramUniform2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform2uiv"));
+ d->ProgramUniform2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform2ui"));
+ d->ProgramUniform2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform2dv"));
+ d->ProgramUniform2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform2d"));
+ d->ProgramUniform2fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform2fv"));
+ d->ProgramUniform2f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform2f"));
+ d->ProgramUniform2iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform2iv"));
+ d->ProgramUniform2i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform2i"));
+ d->ProgramUniform1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform1uiv"));
+ d->ProgramUniform1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint )>(context->getProcAddress("glProgramUniform1ui"));
+ d->ProgramUniform1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform1dv"));
+ d->ProgramUniform1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble )>(context->getProcAddress("glProgramUniform1d"));
+ d->ProgramUniform1fv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform1fv"));
+ d->ProgramUniform1f = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat )>(context->getProcAddress("glProgramUniform1f"));
+ d->ProgramUniform1iv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform1iv"));
+ d->ProgramUniform1i = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint )>(context->getProcAddress("glProgramUniform1i"));
+ d->GetProgramPipelineiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetProgramPipelineiv"));
+ d->IsProgramPipeline = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsProgramPipeline"));
+ d->GenProgramPipelines = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenProgramPipelines"));
+ d->DeleteProgramPipelines = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteProgramPipelines"));
+ d->BindProgramPipeline = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glBindProgramPipeline"));
+ d->CreateShaderProgramv = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLchar* const *)>(context->getProcAddress("glCreateShaderProgramv"));
+ d->ActiveShaderProgram = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glActiveShaderProgram"));
+ d->UseProgramStages = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLbitfield , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLint *)>(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<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glMemoryBarrier"));
+ d->BindImageTexture = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLint , GLboolean , GLint , GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLsizei , GLsizei *, GLcharARB *)>(context->getProcAddress("glGetShaderSourceARB"));
+ d->GetUniformivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLint , GLint *)>(context->getProcAddress("glGetUniformivARB"));
+ d->GetUniformfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLint , GLfloat *)>(context->getProcAddress("glGetUniformfvARB"));
+ d->GetActiveUniformARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLuint , GLsizei , GLsizei *, GLint *, GLenum *, GLcharARB *)>(context->getProcAddress("glGetActiveUniformARB"));
+ d->GetUniformLocationARB = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLhandleARB , const GLcharARB *)>(context->getProcAddress("glGetUniformLocationARB"));
+ d->GetAttachedObjectsARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLsizei , GLsizei *, GLhandleARB *)>(context->getProcAddress("glGetAttachedObjectsARB"));
+ d->GetInfoLogARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLsizei , GLsizei *, GLcharARB *)>(context->getProcAddress("glGetInfoLogARB"));
+ d->GetObjectParameterivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLenum , GLint *)>(context->getProcAddress("glGetObjectParameterivARB"));
+ d->GetObjectParameterfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLenum , GLfloat *)>(context->getProcAddress("glGetObjectParameterfvARB"));
+ d->UniformMatrix4fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix4fvARB"));
+ d->UniformMatrix3fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix3fvARB"));
+ d->UniformMatrix2fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glUniformMatrix2fvARB"));
+ d->Uniform4ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint *)>(context->getProcAddress("glUniform4ivARB"));
+ d->Uniform3ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint *)>(context->getProcAddress("glUniform3ivARB"));
+ d->Uniform2ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint *)>(context->getProcAddress("glUniform2ivARB"));
+ d->Uniform1ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint *)>(context->getProcAddress("glUniform1ivARB"));
+ d->Uniform4fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glUniform4fvARB"));
+ d->Uniform3fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glUniform3fvARB"));
+ d->Uniform2fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glUniform2fvARB"));
+ d->Uniform1fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glUniform1fvARB"));
+ d->Uniform4iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glUniform4iARB"));
+ d->Uniform3iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glUniform3iARB"));
+ d->Uniform2iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glUniform2iARB"));
+ d->Uniform1iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glUniform1iARB"));
+ d->Uniform4fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glUniform4fARB"));
+ d->Uniform3fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glUniform3fARB"));
+ d->Uniform2fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat , GLfloat )>(context->getProcAddress("glUniform2fARB"));
+ d->Uniform1fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLfloat )>(context->getProcAddress("glUniform1fARB"));
+ d->ValidateProgramARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB )>(context->getProcAddress("glValidateProgramARB"));
+ d->UseProgramObjectARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB )>(context->getProcAddress("glUseProgramObjectARB"));
+ d->LinkProgramARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB )>(context->getProcAddress("glLinkProgramARB"));
+ d->AttachObjectARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLhandleARB )>(context->getProcAddress("glAttachObjectARB"));
+ d->CreateProgramObjectARB = reinterpret_cast<GLhandleARB (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glCreateProgramObjectARB"));
+ d->CompileShaderARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB )>(context->getProcAddress("glCompileShaderARB"));
+ d->ShaderSourceARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLsizei , const GLcharARB* *, const GLint *)>(context->getProcAddress("glShaderSourceARB"));
+ d->CreateShaderObjectARB = reinterpret_cast<GLhandleARB (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glCreateShaderObjectARB"));
+ d->DetachObjectARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLhandleARB )>(context->getProcAddress("glDetachObjectARB"));
+ d->GetHandleARB = reinterpret_cast<GLhandleARB (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glGetHandleARB"));
+ d->DeleteObjectARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetProgramStageiv"));
+ d->GetUniformSubroutineuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLuint *)>(context->getProcAddress("glGetUniformSubroutineuiv"));
+ d->UniformSubroutinesuiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLuint *)>(context->getProcAddress("glUniformSubroutinesuiv"));
+ d->GetActiveSubroutineName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetActiveSubroutineName"));
+ d->GetActiveSubroutineUniformName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetActiveSubroutineUniformName"));
+ d->GetActiveSubroutineUniformiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetActiveSubroutineUniformiv"));
+ d->GetSubroutineIndex = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(context->getProcAddress("glGetSubroutineIndex"));
+ d->GetSubroutineUniformLocation = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLchar *)>(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<void (QOPENGLF_APIENTRYP)(GLint , const GLchar *, GLenum , GLint *)>(context->getProcAddress("glGetNamedStringivARB"));
+ d->GetNamedStringARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLchar *, GLsizei , GLint *, GLchar *)>(context->getProcAddress("glGetNamedStringARB"));
+ d->IsNamedStringARB = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLint , const GLchar *)>(context->getProcAddress("glIsNamedStringARB"));
+ d->CompileShaderIncludeARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLchar* *, const GLint *)>(context->getProcAddress("glCompileShaderIncludeARB"));
+ d->DeleteNamedStringARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLchar *)>(context->getProcAddress("glDeleteNamedStringARB"));
+ d->NamedStringARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLchar *, GLint , const GLchar *)>(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<void (QOPENGLF_APIENTRYP)(GLsync , GLenum , GLsizei , GLsizei *, GLint *)>(context->getProcAddress("glGetSynciv"));
+ d->GetInteger64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint64 *)>(context->getProcAddress("glGetInteger64v"));
+ d->WaitSync = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsync , GLbitfield , GLuint64 )>(context->getProcAddress("glWaitSync"));
+ d->ClientWaitSync = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLsync , GLbitfield , GLuint64 )>(context->getProcAddress("glClientWaitSync"));
+ d->DeleteSync = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsync )>(context->getProcAddress("glDeleteSync"));
+ d->IsSync = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLsync )>(context->getProcAddress("glIsSync"));
+ d->FenceSync = reinterpret_cast<GLsync (QOPENGLF_APIENTRYP)(GLenum , GLbitfield )>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glPatchParameterfv"));
+ d->PatchParameteri = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLintptr , GLsizeiptr )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLvoid *)>(context->getProcAddress("glGetCompressedTexImageARB"));
+ d->CompressedTexSubImage1DARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexSubImage1DARB"));
+ d->CompressedTexSubImage2DARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexSubImage2DARB"));
+ d->CompressedTexSubImage3DARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexSubImage3DARB"));
+ d->CompressedTexImage1DARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexImage1DARB"));
+ d->CompressedTexImage2DARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTexImage2DARB"));
+ d->CompressedTexImage3DARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLbitfield )>(context->getProcAddress("glSampleMaski"));
+ d->GetMultisamplefv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat *)>(context->getProcAddress("glGetMultisamplefv"));
+ d->TexImage3DMultisample = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTexImage3DMultisample"));
+ d->TexImage2DMultisample = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress("glTexStorage3D"));
+ d->TexStorage2D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glTexStorage2D"));
+ d->TexStorage1D = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTexStorage3DMultisample"));
+ d->TexStorage2DMultisample = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLenum , GLuint , GLuint , GLuint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64 *)>(context->getProcAddress("glGetQueryObjectui64v"));
+ d->GetQueryObjecti64v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint64 *)>(context->getProcAddress("glGetQueryObjecti64v"));
+ d->QueryCounter = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glDrawTransformFeedback"));
+ d->ResumeTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glResumeTransformFeedback"));
+ d->PauseTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPauseTransformFeedback"));
+ d->IsTransformFeedback = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsTransformFeedback"));
+ d->GenTransformFeedbacks = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenTransformFeedbacks"));
+ d->DeleteTransformFeedbacks = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteTransformFeedbacks"));
+ d->BindTransformFeedback = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetQueryIndexediv"));
+ d->EndQueryIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glEndQueryIndexed"));
+ d->BeginQueryIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint )>(context->getProcAddress("glBeginQueryIndexed"));
+ d->DrawTransformFeedbackStream = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei )>(context->getProcAddress("glDrawTransformFeedbackStreamInstanced"));
+ d->DrawTransformFeedbackInstanced = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glMultTransposeMatrixdARB"));
+ d->MultTransposeMatrixfARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glMultTransposeMatrixfARB"));
+ d->LoadTransposeMatrixdARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glLoadTransposeMatrixdARB"));
+ d->LoadTransposeMatrixfARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glUniformBlockBinding"));
+ d->GetActiveUniformBlockName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetActiveUniformBlockName"));
+ d->GetActiveUniformBlockiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetActiveUniformBlockiv"));
+ d->GetUniformBlockIndex = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetUniformBlockIndex"));
+ d->GetActiveUniformName = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetActiveUniformName"));
+ d->GetActiveUniformsiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLuint *, GLenum , GLint *)>(context->getProcAddress("glGetActiveUniformsiv"));
+ d->GetUniformIndices = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLchar* const *, GLuint *)>(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<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsVertexArray"));
+ d->GenVertexArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenVertexArrays"));
+ d->DeleteVertexArrays = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteVertexArrays"));
+ d->BindVertexArray = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLdouble *)>(context->getProcAddress("glGetVertexAttribLdv"));
+ d->VertexAttribLPointer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexAttribLPointer"));
+ d->VertexAttribL4dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL4dv"));
+ d->VertexAttribL3dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL3dv"));
+ d->VertexAttribL2dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL2dv"));
+ d->VertexAttribL1dv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL1dv"));
+ d->VertexAttribL4d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL4d"));
+ d->VertexAttribL3d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL3d"));
+ d->VertexAttribL2d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL2d"));
+ d->VertexAttribL1d = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glVertexBindingDivisor"));
+ d->VertexAttribBinding = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glVertexAttribBinding"));
+ d->VertexAttribLFormat = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLuint )>(context->getProcAddress("glVertexAttribLFormat"));
+ d->VertexAttribIFormat = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLuint )>(context->getProcAddress("glVertexAttribIFormat"));
+ d->VertexAttribFormat = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribFormat"));
+ d->BindVertexBuffer = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLintptr , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLint )>(context->getProcAddress("glVertexBlendARB"));
+ d->WeightPointerARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glWeightPointerARB"));
+ d->WeightuivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLuint *)>(context->getProcAddress("glWeightuivARB"));
+ d->WeightusvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLushort *)>(context->getProcAddress("glWeightusvARB"));
+ d->WeightubvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLubyte *)>(context->getProcAddress("glWeightubvARB"));
+ d->WeightdvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLdouble *)>(context->getProcAddress("glWeightdvARB"));
+ d->WeightfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLfloat *)>(context->getProcAddress("glWeightfvARB"));
+ d->WeightivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLint *)>(context->getProcAddress("glWeightivARB"));
+ d->WeightsvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLshort *)>(context->getProcAddress("glWeightsvARB"));
+ d->WeightbvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLbyte *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLvoid* *)>(context->getProcAddress("glGetBufferPointervARB"));
+ d->GetBufferParameterivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetBufferParameterivARB"));
+ d->UnmapBufferARB = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glUnmapBufferARB"));
+ d->MapBufferARB = reinterpret_cast<GLvoid* (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glMapBufferARB"));
+ d->GetBufferSubDataARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLintptrARB , GLsizeiptrARB , GLvoid *)>(context->getProcAddress("glGetBufferSubDataARB"));
+ d->BufferSubDataARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLintptrARB , GLsizeiptrARB , const GLvoid *)>(context->getProcAddress("glBufferSubDataARB"));
+ d->BufferDataARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizeiptrARB , const GLvoid *, GLenum )>(context->getProcAddress("glBufferDataARB"));
+ d->IsBufferARB = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsBufferARB"));
+ d->GenBuffersARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenBuffersARB"));
+ d->DeleteBuffersARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteBuffersARB"));
+ d->BindBufferARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(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<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsProgramARB"));
+ d->GetVertexAttribPointervARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLvoid* *)>(context->getProcAddress("glGetVertexAttribPointervARB"));
+ d->GetVertexAttribivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVertexAttribivARB"));
+ d->GetVertexAttribfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetVertexAttribfvARB"));
+ d->GetVertexAttribdvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLdouble *)>(context->getProcAddress("glGetVertexAttribdvARB"));
+ d->GetProgramStringARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetProgramStringARB"));
+ d->GetProgramivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetProgramivARB"));
+ d->GetProgramLocalParameterfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat *)>(context->getProcAddress("glGetProgramLocalParameterfvARB"));
+ d->GetProgramLocalParameterdvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLdouble *)>(context->getProcAddress("glGetProgramLocalParameterdvARB"));
+ d->GetProgramEnvParameterfvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat *)>(context->getProcAddress("glGetProgramEnvParameterfvARB"));
+ d->GetProgramEnvParameterdvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLdouble *)>(context->getProcAddress("glGetProgramEnvParameterdvARB"));
+ d->ProgramLocalParameter4fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLfloat *)>(context->getProcAddress("glProgramLocalParameter4fvARB"));
+ d->ProgramLocalParameter4fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramLocalParameter4fARB"));
+ d->ProgramLocalParameter4dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLdouble *)>(context->getProcAddress("glProgramLocalParameter4dvARB"));
+ d->ProgramLocalParameter4dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramLocalParameter4dARB"));
+ d->ProgramEnvParameter4fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLfloat *)>(context->getProcAddress("glProgramEnvParameter4fvARB"));
+ d->ProgramEnvParameter4fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramEnvParameter4fARB"));
+ d->ProgramEnvParameter4dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLdouble *)>(context->getProcAddress("glProgramEnvParameter4dvARB"));
+ d->ProgramEnvParameter4dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramEnvParameter4dARB"));
+ d->GenProgramsARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenProgramsARB"));
+ d->DeleteProgramsARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteProgramsARB"));
+ d->BindProgramARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindProgramARB"));
+ d->ProgramStringARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glProgramStringARB"));
+ d->DisableVertexAttribArrayARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glDisableVertexAttribArrayARB"));
+ d->EnableVertexAttribArrayARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glEnableVertexAttribArrayARB"));
+ d->VertexAttribPointerARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLboolean , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexAttribPointerARB"));
+ d->VertexAttrib4usvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLushort *)>(context->getProcAddress("glVertexAttrib4usvARB"));
+ d->VertexAttrib4uivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttrib4uivARB"));
+ d->VertexAttrib4ubvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLubyte *)>(context->getProcAddress("glVertexAttrib4ubvARB"));
+ d->VertexAttrib4svARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib4svARB"));
+ d->VertexAttrib4sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib4sARB"));
+ d->VertexAttrib4ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttrib4ivARB"));
+ d->VertexAttrib4fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib4fvARB"));
+ d->VertexAttrib4fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib4fARB"));
+ d->VertexAttrib4dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib4dvARB"));
+ d->VertexAttrib4dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib4dARB"));
+ d->VertexAttrib4bvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLbyte *)>(context->getProcAddress("glVertexAttrib4bvARB"));
+ d->VertexAttrib4NusvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLushort *)>(context->getProcAddress("glVertexAttrib4NusvARB"));
+ d->VertexAttrib4NuivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttrib4NuivARB"));
+ d->VertexAttrib4NubvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLubyte *)>(context->getProcAddress("glVertexAttrib4NubvARB"));
+ d->VertexAttrib4NubARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLubyte , GLubyte , GLubyte , GLubyte )>(context->getProcAddress("glVertexAttrib4NubARB"));
+ d->VertexAttrib4NsvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib4NsvARB"));
+ d->VertexAttrib4NivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttrib4NivARB"));
+ d->VertexAttrib4NbvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLbyte *)>(context->getProcAddress("glVertexAttrib4NbvARB"));
+ d->VertexAttrib3svARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib3svARB"));
+ d->VertexAttrib3sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib3sARB"));
+ d->VertexAttrib3fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib3fvARB"));
+ d->VertexAttrib3fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib3fARB"));
+ d->VertexAttrib3dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib3dvARB"));
+ d->VertexAttrib3dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib3dARB"));
+ d->VertexAttrib2svARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib2svARB"));
+ d->VertexAttrib2sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib2sARB"));
+ d->VertexAttrib2fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib2fvARB"));
+ d->VertexAttrib2fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib2fARB"));
+ d->VertexAttrib2dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib2dvARB"));
+ d->VertexAttrib2dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib2dARB"));
+ d->VertexAttrib1svARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib1svARB"));
+ d->VertexAttrib1sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort )>(context->getProcAddress("glVertexAttrib1sARB"));
+ d->VertexAttrib1fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib1fvARB"));
+ d->VertexAttrib1fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat )>(context->getProcAddress("glVertexAttrib1fARB"));
+ d->VertexAttrib1dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib1dvARB"));
+ d->VertexAttrib1dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble )>(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<GLint (QOPENGLF_APIENTRYP)(GLhandleARB , const GLcharARB *)>(context->getProcAddress("glGetAttribLocationARB"));
+ d->GetActiveAttribARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLuint , GLsizei , GLsizei *, GLint *, GLenum *, GLcharARB *)>(context->getProcAddress("glGetActiveAttribARB"));
+ d->BindAttribLocationARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhandleARB , GLuint , const GLcharARB *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , const GLuint *)>(context->getProcAddress("glVertexAttribP4uiv"));
+ d->VertexAttribP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribP4ui"));
+ d->VertexAttribP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , const GLuint *)>(context->getProcAddress("glVertexAttribP3uiv"));
+ d->VertexAttribP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribP3ui"));
+ d->VertexAttribP2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , const GLuint *)>(context->getProcAddress("glVertexAttribP2uiv"));
+ d->VertexAttribP2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribP2ui"));
+ d->VertexAttribP1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , const GLuint *)>(context->getProcAddress("glVertexAttribP1uiv"));
+ d->VertexAttribP1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexAttribP1ui"));
+ d->SecondaryColorP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glSecondaryColorP3uiv"));
+ d->SecondaryColorP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glSecondaryColorP3ui"));
+ d->ColorP4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glColorP4uiv"));
+ d->ColorP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glColorP4ui"));
+ d->ColorP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glColorP3uiv"));
+ d->ColorP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glColorP3ui"));
+ d->NormalP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glNormalP3uiv"));
+ d->NormalP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glNormalP3ui"));
+ d->MultiTexCoordP4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexCoordP4uiv"));
+ d->MultiTexCoordP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexCoordP4ui"));
+ d->MultiTexCoordP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexCoordP3uiv"));
+ d->MultiTexCoordP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexCoordP3ui"));
+ d->MultiTexCoordP2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexCoordP2uiv"));
+ d->MultiTexCoordP2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexCoordP2ui"));
+ d->MultiTexCoordP1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexCoordP1uiv"));
+ d->MultiTexCoordP1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexCoordP1ui"));
+ d->TexCoordP4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glTexCoordP4uiv"));
+ d->TexCoordP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexCoordP4ui"));
+ d->TexCoordP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glTexCoordP3uiv"));
+ d->TexCoordP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexCoordP3ui"));
+ d->TexCoordP2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glTexCoordP2uiv"));
+ d->TexCoordP2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexCoordP2ui"));
+ d->TexCoordP1uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glTexCoordP1uiv"));
+ d->TexCoordP1ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexCoordP1ui"));
+ d->VertexP4uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glVertexP4uiv"));
+ d->VertexP4ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glVertexP4ui"));
+ d->VertexP3uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glVertexP3uiv"));
+ d->VertexP3ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glVertexP3ui"));
+ d->VertexP2uiv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLuint *)>(context->getProcAddress("glVertexP2uiv"));
+ d->VertexP2ui = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLdouble *)>(context->getProcAddress("glGetDoublei_v"));
+ d->GetFloati_v = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat *)>(context->getProcAddress("glGetFloati_v"));
+ d->DepthRangeIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble )>(context->getProcAddress("glDepthRangeIndexed"));
+ d->DepthRangeArrayv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLdouble *)>(context->getProcAddress("glDepthRangeArrayv"));
+ d->ScissorIndexedv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glScissorIndexedv"));
+ d->ScissorIndexed = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glScissorIndexed"));
+ d->ScissorArrayv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLint *)>(context->getProcAddress("glScissorArrayv"));
+ d->ViewportIndexedfv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glViewportIndexedfv"));
+ d->ViewportIndexedf = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glViewportIndexedf"));
+ d->ViewportArrayv = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glWindowPos3svARB"));
+ d->WindowPos3sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glWindowPos3sARB"));
+ d->WindowPos3ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glWindowPos3ivARB"));
+ d->WindowPos3iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glWindowPos3iARB"));
+ d->WindowPos3fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glWindowPos3fvARB"));
+ d->WindowPos3fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glWindowPos3fARB"));
+ d->WindowPos3dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glWindowPos3dvARB"));
+ d->WindowPos3dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glWindowPos3dARB"));
+ d->WindowPos2svARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glWindowPos2svARB"));
+ d->WindowPos2sARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(context->getProcAddress("glWindowPos2sARB"));
+ d->WindowPos2ivARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glWindowPos2ivARB"));
+ d->WindowPos2iARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glWindowPos2iARB"));
+ d->WindowPos2fvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glWindowPos2fvARB"));
+ d->WindowPos2fARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glWindowPos2fARB"));
+ d->WindowPos2dvARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glWindowPos2dvARB"));
+ d->WindowPos2dARB = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(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<void (QOPENGLF_APIENTRYP)(GLsizei , const GLenum *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei )>(context->getProcAddress("glDrawRangeElementArrayATI"));
+ d->DrawElementArrayATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei )>(context->getProcAddress("glDrawElementArrayATI"));
+ d->ElementPointerATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(context->getProcAddress("glGetTexBumpParameterfvATI"));
+ d->GetTexBumpParameterivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint *)>(context->getProcAddress("glGetTexBumpParameterivATI"));
+ d->TexBumpParameterfvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glTexBumpParameterfvATI"));
+ d->TexBumpParameterivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glSetFragmentShaderConstantATI"));
+ d->AlphaFragmentOp3ATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glAlphaFragmentOp3ATI"));
+ d->AlphaFragmentOp2ATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glAlphaFragmentOp2ATI"));
+ d->AlphaFragmentOp1ATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glAlphaFragmentOp1ATI"));
+ d->ColorFragmentOp3ATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glColorFragmentOp3ATI"));
+ d->ColorFragmentOp2ATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glColorFragmentOp2ATI"));
+ d->ColorFragmentOp1ATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glColorFragmentOp1ATI"));
+ d->SampleMapATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum )>(context->getProcAddress("glSampleMapATI"));
+ d->PassTexCoordATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum )>(context->getProcAddress("glPassTexCoordATI"));
+ d->EndFragmentShaderATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndFragmentShaderATI"));
+ d->BeginFragmentShaderATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glBeginFragmentShaderATI"));
+ d->DeleteFragmentShaderATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glDeleteFragmentShaderATI"));
+ d->BindFragmentShaderATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glBindFragmentShaderATI"));
+ d->GenFragmentShadersATI = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glUnmapObjectBufferATI"));
+ d->MapObjectBufferATI = reinterpret_cast<GLvoid* (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glPNTrianglesfATI"));
+ d->PNTrianglesiATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLuint )>(context->getProcAddress("glStencilFuncSeparateATI"));
+ d->StencilOpSeparateATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVariantArrayObjectivATI"));
+ d->GetVariantArrayObjectfvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetVariantArrayObjectfvATI"));
+ d->VariantArrayObjectATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLuint , GLuint )>(context->getProcAddress("glVariantArrayObjectATI"));
+ d->GetArrayObjectivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetArrayObjectivATI"));
+ d->GetArrayObjectfvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetArrayObjectfvATI"));
+ d->ArrayObjectATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLuint , GLuint )>(context->getProcAddress("glArrayObjectATI"));
+ d->FreeObjectBufferATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glFreeObjectBufferATI"));
+ d->GetObjectBufferivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetObjectBufferivATI"));
+ d->GetObjectBufferfvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetObjectBufferfvATI"));
+ d->UpdateObjectBufferATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , const GLvoid *, GLenum )>(context->getProcAddress("glUpdateObjectBufferATI"));
+ d->IsObjectBufferATI = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsObjectBufferATI"));
+ d->NewObjectBufferATI = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLsizei , const GLvoid *, GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVertexAttribArrayObjectivATI"));
+ d->GetVertexAttribArrayObjectfvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetVertexAttribArrayObjectfvATI"));
+ d->VertexAttribArrayObjectATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLboolean , GLsizei , GLuint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glVertexBlendEnvfATI"));
+ d->VertexBlendEnviATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glVertexBlendEnviATI"));
+ d->ClientActiveVertexStreamATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glClientActiveVertexStreamATI"));
+ d->NormalStream3dvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glNormalStream3dvATI"));
+ d->NormalStream3dATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glNormalStream3dATI"));
+ d->NormalStream3fvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glNormalStream3fvATI"));
+ d->NormalStream3fATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glNormalStream3fATI"));
+ d->NormalStream3ivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glNormalStream3ivATI"));
+ d->NormalStream3iATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint )>(context->getProcAddress("glNormalStream3iATI"));
+ d->NormalStream3svATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glNormalStream3svATI"));
+ d->NormalStream3sATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort , GLshort )>(context->getProcAddress("glNormalStream3sATI"));
+ d->NormalStream3bvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLbyte *)>(context->getProcAddress("glNormalStream3bvATI"));
+ d->NormalStream3bATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLbyte , GLbyte , GLbyte )>(context->getProcAddress("glNormalStream3bATI"));
+ d->VertexStream4dvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glVertexStream4dvATI"));
+ d->VertexStream4dATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexStream4dATI"));
+ d->VertexStream4fvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glVertexStream4fvATI"));
+ d->VertexStream4fATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertexStream4fATI"));
+ d->VertexStream4ivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glVertexStream4ivATI"));
+ d->VertexStream4iATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint )>(context->getProcAddress("glVertexStream4iATI"));
+ d->VertexStream4svATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glVertexStream4svATI"));
+ d->VertexStream4sATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertexStream4sATI"));
+ d->VertexStream3dvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glVertexStream3dvATI"));
+ d->VertexStream3dATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexStream3dATI"));
+ d->VertexStream3fvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glVertexStream3fvATI"));
+ d->VertexStream3fATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertexStream3fATI"));
+ d->VertexStream3ivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glVertexStream3ivATI"));
+ d->VertexStream3iATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint )>(context->getProcAddress("glVertexStream3iATI"));
+ d->VertexStream3svATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glVertexStream3svATI"));
+ d->VertexStream3sATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertexStream3sATI"));
+ d->VertexStream2dvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glVertexStream2dvATI"));
+ d->VertexStream2dATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble )>(context->getProcAddress("glVertexStream2dATI"));
+ d->VertexStream2fvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glVertexStream2fvATI"));
+ d->VertexStream2fATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat )>(context->getProcAddress("glVertexStream2fATI"));
+ d->VertexStream2ivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glVertexStream2ivATI"));
+ d->VertexStream2iATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint )>(context->getProcAddress("glVertexStream2iATI"));
+ d->VertexStream2svATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glVertexStream2svATI"));
+ d->VertexStream2sATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort , GLshort )>(context->getProcAddress("glVertexStream2sATI"));
+ d->VertexStream1dvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glVertexStream1dvATI"));
+ d->VertexStream1dATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble )>(context->getProcAddress("glVertexStream1dATI"));
+ d->VertexStream1fvATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glVertexStream1fvATI"));
+ d->VertexStream1fATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glVertexStream1fATI"));
+ d->VertexStream1ivATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glVertexStream1ivATI"));
+ d->VertexStream1iATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glVertexStream1iATI"));
+ d->VertexStream1svATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLshort *)>(context->getProcAddress("glVertexStream1svATI"));
+ d->VertexStream1sATI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLshort )>(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<GLintptr (QOPENGLF_APIENTRYP)(GLuint , GLint )>(context->getProcAddress("glGetUniformOffsetEXT"));
+ d->GetUniformBufferSizeEXT = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , GLint )>(context->getProcAddress("glGetUniformBufferSizeEXT"));
+ d->UniformBufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyColorSubTableEXT"));
+ d->ColorSubTableEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glUnlockArraysEXT"));
+ d->LockArraysEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *, const GLvoid *)>(context->getProcAddress("glSeparableFilter2DEXT"));
+ d->GetSeparableFilterEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLvoid *, GLvoid *, GLvoid *)>(context->getProcAddress("glGetSeparableFilterEXT"));
+ d->GetConvolutionParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetConvolutionParameterivEXT"));
+ d->GetConvolutionParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetConvolutionParameterfvEXT"));
+ d->GetConvolutionFilterEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetConvolutionFilterEXT"));
+ d->CopyConvolutionFilter2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyConvolutionFilter2DEXT"));
+ d->CopyConvolutionFilter1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyConvolutionFilter1DEXT"));
+ d->ConvolutionParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glConvolutionParameterivEXT"));
+ d->ConvolutionParameteriEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glConvolutionParameteriEXT"));
+ d->ConvolutionParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glConvolutionParameterfvEXT"));
+ d->ConvolutionParameterfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glConvolutionParameterfEXT"));
+ d->ConvolutionFilter2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glConvolutionFilter2DEXT"));
+ d->ConvolutionFilter1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLenum , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glBinormalPointerEXT"));
+ d->TangentPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glTangentPointerEXT"));
+ d->Binormal3svEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glBinormal3svEXT"));
+ d->Binormal3sEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glBinormal3sEXT"));
+ d->Binormal3ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glBinormal3ivEXT"));
+ d->Binormal3iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glBinormal3iEXT"));
+ d->Binormal3fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glBinormal3fvEXT"));
+ d->Binormal3fEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glBinormal3fEXT"));
+ d->Binormal3dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glBinormal3dvEXT"));
+ d->Binormal3dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glBinormal3dEXT"));
+ d->Binormal3bvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(context->getProcAddress("glBinormal3bvEXT"));
+ d->Binormal3bEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte )>(context->getProcAddress("glBinormal3bEXT"));
+ d->Tangent3svEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glTangent3svEXT"));
+ d->Tangent3sEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glTangent3sEXT"));
+ d->Tangent3ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glTangent3ivEXT"));
+ d->Tangent3iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glTangent3iEXT"));
+ d->Tangent3fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glTangent3fvEXT"));
+ d->Tangent3fEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTangent3fEXT"));
+ d->Tangent3dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glTangent3dvEXT"));
+ d->Tangent3dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glTangent3dEXT"));
+ d->Tangent3bvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(context->getProcAddress("glTangent3bvEXT"));
+ d->Tangent3bEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyTexSubImage3DEXT"));
+ d->CopyTexSubImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyTexSubImage2DEXT"));
+ d->CopyTexSubImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyTexSubImage1DEXT"));
+ d->CopyTexImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLsizei , GLint )>(context->getProcAddress("glCopyTexImage2DEXT"));
+ d->CopyTexImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(context->getProcAddress("glCullParameterfvEXT"));
+ d->CullParameterdvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble *)>(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<void (QOPENGLF_APIENTRYP)(GLclampd , GLclampd )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4x3dvEXT"));
+ d->ProgramUniformMatrix4x2dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4x2dvEXT"));
+ d->ProgramUniformMatrix3x4dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3x4dvEXT"));
+ d->ProgramUniformMatrix3x2dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3x2dvEXT"));
+ d->ProgramUniformMatrix2x4dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2x4dvEXT"));
+ d->ProgramUniformMatrix2x3dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2x3dvEXT"));
+ d->ProgramUniformMatrix4dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix4dvEXT"));
+ d->ProgramUniformMatrix3dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix3dvEXT"));
+ d->ProgramUniformMatrix2dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLdouble *)>(context->getProcAddress("glProgramUniformMatrix2dvEXT"));
+ d->ProgramUniform4dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform4dvEXT"));
+ d->ProgramUniform3dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform3dvEXT"));
+ d->ProgramUniform2dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform2dvEXT"));
+ d->ProgramUniform1dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramUniform1dvEXT"));
+ d->ProgramUniform4dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform4dEXT"));
+ d->ProgramUniform3dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform3dEXT"));
+ d->ProgramUniform2dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble , GLdouble )>(context->getProcAddress("glProgramUniform2dEXT"));
+ d->ProgramUniform1dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLdouble )>(context->getProcAddress("glProgramUniform1dEXT"));
+ d->MultiTexRenderbufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexRenderbufferEXT"));
+ d->TextureRenderbufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint )>(context->getProcAddress("glTextureRenderbufferEXT"));
+ d->NamedFramebufferTextureFaceEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLint , GLenum )>(context->getProcAddress("glNamedFramebufferTextureFaceEXT"));
+ d->NamedFramebufferTextureLayerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glNamedFramebufferTextureLayerEXT"));
+ d->NamedFramebufferTextureEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLint )>(context->getProcAddress("glNamedFramebufferTextureEXT"));
+ d->NamedRenderbufferStorageMultisampleCoverageEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glNamedRenderbufferStorageMultisampleCoverageEXT"));
+ d->NamedRenderbufferStorageMultisampleEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glNamedRenderbufferStorageMultisampleEXT"));
+ d->GetFramebufferParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetFramebufferParameterivEXT"));
+ d->FramebufferReadBufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glFramebufferReadBufferEXT"));
+ d->FramebufferDrawBuffersEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLenum *)>(context->getProcAddress("glFramebufferDrawBuffersEXT"));
+ d->FramebufferDrawBufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glFramebufferDrawBufferEXT"));
+ d->GenerateMultiTexMipmapEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glGenerateMultiTexMipmapEXT"));
+ d->GenerateTextureMipmapEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glGenerateTextureMipmapEXT"));
+ d->GetNamedFramebufferAttachmentParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetNamedFramebufferAttachmentParameterivEXT"));
+ d->NamedFramebufferRenderbufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLuint )>(context->getProcAddress("glNamedFramebufferRenderbufferEXT"));
+ d->NamedFramebufferTexture3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glNamedFramebufferTexture3DEXT"));
+ d->NamedFramebufferTexture2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glNamedFramebufferTexture2DEXT"));
+ d->NamedFramebufferTexture1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glNamedFramebufferTexture1DEXT"));
+ d->CheckNamedFramebufferStatusEXT = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glCheckNamedFramebufferStatusEXT"));
+ d->GetNamedRenderbufferParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetNamedRenderbufferParameterivEXT"));
+ d->NamedRenderbufferStorageEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glNamedRenderbufferStorageEXT"));
+ d->MultiTexBufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint )>(context->getProcAddress("glMultiTexBufferEXT"));
+ d->TextureBufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLuint )>(context->getProcAddress("glTextureBufferEXT"));
+ d->GetNamedBufferSubDataEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLintptr , GLsizeiptr , GLvoid *)>(context->getProcAddress("glGetNamedBufferSubDataEXT"));
+ d->GetNamedBufferPointervEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLvoid* *)>(context->getProcAddress("glGetNamedBufferPointervEXT"));
+ d->GetNamedBufferParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetNamedBufferParameterivEXT"));
+ d->NamedCopyBufferSubDataEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLintptr , GLintptr , GLsizeiptr )>(context->getProcAddress("glNamedCopyBufferSubDataEXT"));
+ d->FlushMappedNamedBufferRangeEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress("glFlushMappedNamedBufferRangeEXT"));
+ d->MapNamedBufferRangeEXT = reinterpret_cast<GLvoid* (QOPENGLF_APIENTRYP)(GLuint , GLintptr , GLsizeiptr , GLbitfield )>(context->getProcAddress("glMapNamedBufferRangeEXT"));
+ d->UnmapNamedBufferEXT = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glUnmapNamedBufferEXT"));
+ d->MapNamedBufferEXT = reinterpret_cast<GLvoid* (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glMapNamedBufferEXT"));
+ d->NamedBufferSubDataEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLintptr , GLsizeiptr , const GLvoid *)>(context->getProcAddress("glNamedBufferSubDataEXT"));
+ d->NamedBufferDataEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizeiptr , const GLvoid *, GLenum )>(context->getProcAddress("glNamedBufferDataEXT"));
+ d->ProgramUniform4uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform4uivEXT"));
+ d->ProgramUniform3uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform3uivEXT"));
+ d->ProgramUniform2uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform2uivEXT"));
+ d->ProgramUniform1uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramUniform1uivEXT"));
+ d->ProgramUniform4uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform4uiEXT"));
+ d->ProgramUniform3uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform3uiEXT"));
+ d->ProgramUniform2uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint , GLuint )>(context->getProcAddress("glProgramUniform2uiEXT"));
+ d->ProgramUniform1uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint )>(context->getProcAddress("glProgramUniform1uiEXT"));
+ d->ProgramUniformMatrix4x3fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4x3fvEXT"));
+ d->ProgramUniformMatrix3x4fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3x4fvEXT"));
+ d->ProgramUniformMatrix4x2fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4x2fvEXT"));
+ d->ProgramUniformMatrix2x4fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2x4fvEXT"));
+ d->ProgramUniformMatrix3x2fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3x2fvEXT"));
+ d->ProgramUniformMatrix2x3fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2x3fvEXT"));
+ d->ProgramUniformMatrix4fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix4fvEXT"));
+ d->ProgramUniformMatrix3fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix3fvEXT"));
+ d->ProgramUniformMatrix2fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , GLboolean , const GLfloat *)>(context->getProcAddress("glProgramUniformMatrix2fvEXT"));
+ d->ProgramUniform4ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform4ivEXT"));
+ d->ProgramUniform3ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform3ivEXT"));
+ d->ProgramUniform2ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform2ivEXT"));
+ d->ProgramUniform1ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint *)>(context->getProcAddress("glProgramUniform1ivEXT"));
+ d->ProgramUniform4fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform4fvEXT"));
+ d->ProgramUniform3fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform3fvEXT"));
+ d->ProgramUniform2fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform2fvEXT"));
+ d->ProgramUniform1fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramUniform1fvEXT"));
+ d->ProgramUniform4iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform4iEXT"));
+ d->ProgramUniform3iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform3iEXT"));
+ d->ProgramUniform2iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint )>(context->getProcAddress("glProgramUniform2iEXT"));
+ d->ProgramUniform1iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint )>(context->getProcAddress("glProgramUniform1iEXT"));
+ d->ProgramUniform4fEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform4fEXT"));
+ d->ProgramUniform3fEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform3fEXT"));
+ d->ProgramUniform2fEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat , GLfloat )>(context->getProcAddress("glProgramUniform2fEXT"));
+ d->ProgramUniform1fEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLfloat )>(context->getProcAddress("glProgramUniform1fEXT"));
+ d->GetMultiTexParameterIuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint *)>(context->getProcAddress("glGetMultiTexParameterIuivEXT"));
+ d->GetMultiTexParameterIivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMultiTexParameterIivEXT"));
+ d->MultiTexParameterIuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLuint *)>(context->getProcAddress("glMultiTexParameterIuivEXT"));
+ d->MultiTexParameterIivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLint *)>(context->getProcAddress("glMultiTexParameterIivEXT"));
+ d->GetTextureParameterIuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLuint *)>(context->getProcAddress("glGetTextureParameterIuivEXT"));
+ d->GetTextureParameterIivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetTextureParameterIivEXT"));
+ d->TextureParameterIuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , const GLuint *)>(context->getProcAddress("glTextureParameterIuivEXT"));
+ d->TextureParameterIivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , const GLint *)>(context->getProcAddress("glTextureParameterIivEXT"));
+ d->GetNamedProgramLocalParameterIuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLuint *)>(context->getProcAddress("glGetNamedProgramLocalParameterIuivEXT"));
+ d->GetNamedProgramLocalParameterIivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLint *)>(context->getProcAddress("glGetNamedProgramLocalParameterIivEXT"));
+ d->NamedProgramLocalParametersI4uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , const GLuint *)>(context->getProcAddress("glNamedProgramLocalParametersI4uivEXT"));
+ d->NamedProgramLocalParameterI4uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , const GLuint *)>(context->getProcAddress("glNamedProgramLocalParameterI4uivEXT"));
+ d->NamedProgramLocalParameterI4uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glNamedProgramLocalParameterI4uiEXT"));
+ d->NamedProgramLocalParametersI4ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , const GLint *)>(context->getProcAddress("glNamedProgramLocalParametersI4ivEXT"));
+ d->NamedProgramLocalParameterI4ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , const GLint *)>(context->getProcAddress("glNamedProgramLocalParameterI4ivEXT"));
+ d->NamedProgramLocalParameterI4iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glNamedProgramLocalParameterI4iEXT"));
+ d->NamedProgramLocalParameters4fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glNamedProgramLocalParameters4fvEXT"));
+ d->GetNamedProgramStringEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetNamedProgramStringEXT"));
+ d->GetNamedProgramivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetNamedProgramivEXT"));
+ d->GetNamedProgramLocalParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLfloat *)>(context->getProcAddress("glGetNamedProgramLocalParameterfvEXT"));
+ d->GetNamedProgramLocalParameterdvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLdouble *)>(context->getProcAddress("glGetNamedProgramLocalParameterdvEXT"));
+ d->NamedProgramLocalParameter4fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , const GLfloat *)>(context->getProcAddress("glNamedProgramLocalParameter4fvEXT"));
+ d->NamedProgramLocalParameter4fEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glNamedProgramLocalParameter4fEXT"));
+ d->NamedProgramLocalParameter4dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , const GLdouble *)>(context->getProcAddress("glNamedProgramLocalParameter4dvEXT"));
+ d->NamedProgramLocalParameter4dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glNamedProgramLocalParameter4dEXT"));
+ d->NamedProgramStringEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glNamedProgramStringEXT"));
+ d->GetCompressedMultiTexImageEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLvoid *)>(context->getProcAddress("glGetCompressedMultiTexImageEXT"));
+ d->CompressedMultiTexSubImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedMultiTexSubImage1DEXT"));
+ d->CompressedMultiTexSubImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedMultiTexSubImage2DEXT"));
+ d->CompressedMultiTexSubImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedMultiTexSubImage3DEXT"));
+ d->CompressedMultiTexImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedMultiTexImage1DEXT"));
+ d->CompressedMultiTexImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedMultiTexImage2DEXT"));
+ d->CompressedMultiTexImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedMultiTexImage3DEXT"));
+ d->GetCompressedTextureImageEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLvoid *)>(context->getProcAddress("glGetCompressedTextureImageEXT"));
+ d->CompressedTextureSubImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTextureSubImage1DEXT"));
+ d->CompressedTextureSubImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTextureSubImage2DEXT"));
+ d->CompressedTextureSubImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTextureSubImage3DEXT"));
+ d->CompressedTextureImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTextureImage1DEXT"));
+ d->CompressedTextureImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTextureImage2DEXT"));
+ d->CompressedTextureImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLsizei , const GLvoid *)>(context->getProcAddress("glCompressedTextureImage3DEXT"));
+ d->GetPointerIndexedvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLvoid* *)>(context->getProcAddress("glGetPointerIndexedvEXT"));
+ d->GetDoubleIndexedvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLdouble *)>(context->getProcAddress("glGetDoubleIndexedvEXT"));
+ d->GetFloatIndexedvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat *)>(context->getProcAddress("glGetFloatIndexedvEXT"));
+ d->GetMultiTexGenivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMultiTexGenivEXT"));
+ d->GetMultiTexGenfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetMultiTexGenfvEXT"));
+ d->GetMultiTexGendvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLdouble *)>(context->getProcAddress("glGetMultiTexGendvEXT"));
+ d->GetMultiTexEnvivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMultiTexEnvivEXT"));
+ d->GetMultiTexEnvfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetMultiTexEnvfvEXT"));
+ d->MultiTexGenivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLint *)>(context->getProcAddress("glMultiTexGenivEXT"));
+ d->MultiTexGeniEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint )>(context->getProcAddress("glMultiTexGeniEXT"));
+ d->MultiTexGenfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexGenfvEXT"));
+ d->MultiTexGenfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLfloat )>(context->getProcAddress("glMultiTexGenfEXT"));
+ d->MultiTexGendvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLdouble *)>(context->getProcAddress("glMultiTexGendvEXT"));
+ d->MultiTexGendEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLdouble )>(context->getProcAddress("glMultiTexGendEXT"));
+ d->MultiTexEnvivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLint *)>(context->getProcAddress("glMultiTexEnvivEXT"));
+ d->MultiTexEnviEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint )>(context->getProcAddress("glMultiTexEnviEXT"));
+ d->MultiTexEnvfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexEnvfvEXT"));
+ d->MultiTexEnvfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLfloat )>(context->getProcAddress("glMultiTexEnvfEXT"));
+ d->MultiTexCoordPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glMultiTexCoordPointerEXT"));
+ d->DisableClientStateIndexedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glDisableClientStateIndexedEXT"));
+ d->EnableClientStateIndexedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glEnableClientStateIndexedEXT"));
+ d->BindMultiTextureEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(context->getProcAddress("glBindMultiTextureEXT"));
+ d->CopyMultiTexSubImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyMultiTexSubImage3DEXT"));
+ d->MultiTexSubImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glMultiTexSubImage3DEXT"));
+ d->MultiTexImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glMultiTexImage3DEXT"));
+ d->GetMultiTexLevelParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLint *)>(context->getProcAddress("glGetMultiTexLevelParameterivEXT"));
+ d->GetMultiTexLevelParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLfloat *)>(context->getProcAddress("glGetMultiTexLevelParameterfvEXT"));
+ d->GetMultiTexParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMultiTexParameterivEXT"));
+ d->GetMultiTexParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetMultiTexParameterfvEXT"));
+ d->GetMultiTexImageEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetMultiTexImageEXT"));
+ d->CopyMultiTexSubImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyMultiTexSubImage2DEXT"));
+ d->CopyMultiTexSubImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyMultiTexSubImage1DEXT"));
+ d->CopyMultiTexImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLsizei , GLint )>(context->getProcAddress("glCopyMultiTexImage2DEXT"));
+ d->CopyMultiTexImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLint )>(context->getProcAddress("glCopyMultiTexImage1DEXT"));
+ d->MultiTexSubImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glMultiTexSubImage2DEXT"));
+ d->MultiTexSubImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glMultiTexSubImage1DEXT"));
+ d->MultiTexImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glMultiTexImage2DEXT"));
+ d->MultiTexImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLenum , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glMultiTexImage1DEXT"));
+ d->MultiTexParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLint *)>(context->getProcAddress("glMultiTexParameterivEXT"));
+ d->MultiTexParameteriEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint )>(context->getProcAddress("glMultiTexParameteriEXT"));
+ d->MultiTexParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glMultiTexParameterfvEXT"));
+ d->MultiTexParameterfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLfloat )>(context->getProcAddress("glMultiTexParameterfEXT"));
+ d->CopyTextureSubImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyTextureSubImage3DEXT"));
+ d->TextureSubImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTextureSubImage3DEXT"));
+ d->TextureImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTextureImage3DEXT"));
+ d->GetTextureLevelParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLint *)>(context->getProcAddress("glGetTextureLevelParameterivEXT"));
+ d->GetTextureLevelParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLfloat *)>(context->getProcAddress("glGetTextureLevelParameterfvEXT"));
+ d->GetTextureParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetTextureParameterivEXT"));
+ d->GetTextureParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetTextureParameterfvEXT"));
+ d->GetTextureImageEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetTextureImageEXT"));
+ d->CopyTextureSubImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei )>(context->getProcAddress("glCopyTextureSubImage2DEXT"));
+ d->CopyTextureSubImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyTextureSubImage1DEXT"));
+ d->CopyTextureImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLsizei , GLint )>(context->getProcAddress("glCopyTextureImage2DEXT"));
+ d->CopyTextureImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLint , GLint , GLsizei , GLint )>(context->getProcAddress("glCopyTextureImage1DEXT"));
+ d->TextureSubImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTextureSubImage2DEXT"));
+ d->TextureSubImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTextureSubImage1DEXT"));
+ d->TextureImage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTextureImage2DEXT"));
+ d->TextureImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLenum , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTextureImage1DEXT"));
+ d->TextureParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , const GLint *)>(context->getProcAddress("glTextureParameterivEXT"));
+ d->TextureParameteriEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLint )>(context->getProcAddress("glTextureParameteriEXT"));
+ d->TextureParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glTextureParameterfvEXT"));
+ d->TextureParameterfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLfloat )>(context->getProcAddress("glTextureParameterfEXT"));
+ d->MatrixMultTransposedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMatrixMultTransposedEXT"));
+ d->MatrixMultTransposefEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMatrixMultTransposefEXT"));
+ d->MatrixLoadTransposedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMatrixLoadTransposedEXT"));
+ d->MatrixLoadTransposefEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMatrixLoadTransposefEXT"));
+ d->MatrixPushEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glMatrixPushEXT"));
+ d->MatrixPopEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glMatrixPopEXT"));
+ d->MatrixOrthoEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMatrixOrthoEXT"));
+ d->MatrixFrustumEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMatrixFrustumEXT"));
+ d->MatrixTranslatedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMatrixTranslatedEXT"));
+ d->MatrixTranslatefEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glMatrixTranslatefEXT"));
+ d->MatrixScaledEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMatrixScaledEXT"));
+ d->MatrixScalefEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glMatrixScalefEXT"));
+ d->MatrixRotatedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glMatrixRotatedEXT"));
+ d->MatrixRotatefEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glMatrixRotatefEXT"));
+ d->MatrixLoadIdentityEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glMatrixLoadIdentityEXT"));
+ d->MatrixMultdEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMatrixMultdEXT"));
+ d->MatrixMultfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMatrixMultfEXT"));
+ d->MatrixLoaddEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLdouble *)>(context->getProcAddress("glMatrixLoaddEXT"));
+ d->MatrixLoadfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glMatrixLoadfEXT"));
+ d->PushClientAttribDefaultEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glPushClientAttribDefaultEXT"));
+ d->ClientAttribDefaultEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glClientAttribDefaultEXT"));
+ d->TextureStorage3DMultisampleEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTextureStorage3DMultisampleEXT"));
+ d->TextureStorage2DMultisampleEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTextureStorage2DMultisampleEXT"));
+ d->TextureBufferRangeEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress("glTextureBufferRangeEXT"));
+ d->GetNamedFramebufferParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetNamedFramebufferParameterivEXT"));
+ d->NamedFramebufferParameteriEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(context->getProcAddress("glNamedFramebufferParameteriEXT"));
+ d->VertexArrayVertexBindingDivisorEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glVertexArrayVertexBindingDivisorEXT"));
+ d->VertexArrayVertexAttribBindingEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glVertexArrayVertexAttribBindingEXT"));
+ d->VertexArrayVertexAttribLFormatEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLint , GLenum , GLuint )>(context->getProcAddress("glVertexArrayVertexAttribLFormatEXT"));
+ d->VertexArrayVertexAttribIFormatEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLint , GLenum , GLuint )>(context->getProcAddress("glVertexArrayVertexAttribIFormatEXT"));
+ d->VertexArrayVertexAttribFormatEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLint , GLenum , GLboolean , GLuint )>(context->getProcAddress("glVertexArrayVertexAttribFormatEXT"));
+ d->VertexArrayBindVertexBufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLintptr , GLsizei )>(context->getProcAddress("glVertexArrayBindVertexBufferEXT"));
+ d->ClearNamedBufferSubDataEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizeiptr , GLsizeiptr , GLenum , GLenum , const void *)>(context->getProcAddress("glClearNamedBufferSubDataEXT"));
+ d->ClearNamedBufferDataEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLenum , GLenum , const void *)>(context->getProcAddress("glClearNamedBufferDataEXT"));
+ d->TextureStorage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei , GLsizei )>(context->getProcAddress("glTextureStorage3DEXT"));
+ d->TextureStorage2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glTextureStorage2DEXT"));
+ d->TextureStorage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLenum , GLsizei )>(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<GLboolean (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glIsEnabledIndexedEXT"));
+ d->DisableIndexedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glDisableIndexedEXT"));
+ d->EnableIndexedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glEnableIndexedEXT"));
+ d->GetIntegerIndexedvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLint *)>(context->getProcAddress("glGetIntegerIndexedvEXT"));
+ d->GetBooleanIndexedvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLboolean *)>(context->getProcAddress("glGetBooleanIndexedvEXT"));
+ d->ColorMaskIndexedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLboolean , GLboolean , GLboolean , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *, GLsizei )>(context->getProcAddress("glDrawElementsInstancedEXT"));
+ d->DrawArraysInstancedEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glFogCoordPointerEXT"));
+ d->FogCoorddvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glFogCoorddvEXT"));
+ d->FogCoorddEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(context->getProcAddress("glFogCoorddEXT"));
+ d->FogCoordfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glFogCoordfvEXT"));
+ d->FogCoordfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint , GLint , GLint , GLint , GLint , GLbitfield , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glGenerateMipmapEXT"));
+ d->GetFramebufferAttachmentParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetFramebufferAttachmentParameterivEXT"));
+ d->FramebufferRenderbufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint )>(context->getProcAddress("glFramebufferRenderbufferEXT"));
+ d->FramebufferTexture3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glFramebufferTexture3DEXT"));
+ d->FramebufferTexture2DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTexture2DEXT"));
+ d->FramebufferTexture1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTexture1DEXT"));
+ d->CheckFramebufferStatusEXT = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glCheckFramebufferStatusEXT"));
+ d->GenFramebuffersEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenFramebuffersEXT"));
+ d->DeleteFramebuffersEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteFramebuffersEXT"));
+ d->BindFramebufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindFramebufferEXT"));
+ d->IsFramebufferEXT = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsFramebufferEXT"));
+ d->GetRenderbufferParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetRenderbufferParameterivEXT"));
+ d->RenderbufferStorageEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLsizei )>(context->getProcAddress("glRenderbufferStorageEXT"));
+ d->GenRenderbuffersEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenRenderbuffersEXT"));
+ d->DeleteRenderbuffersEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteRenderbuffersEXT"));
+ d->BindRenderbufferEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindRenderbufferEXT"));
+ d->IsRenderbufferEXT = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramLocalParameters4fvEXT"));
+ d->ProgramEnvParameters4fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint *)>(context->getProcAddress("glUniform4uivEXT"));
+ d->Uniform3uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint *)>(context->getProcAddress("glUniform3uivEXT"));
+ d->Uniform2uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint *)>(context->getProcAddress("glUniform2uivEXT"));
+ d->Uniform1uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint *)>(context->getProcAddress("glUniform1uivEXT"));
+ d->Uniform4uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glUniform4uiEXT"));
+ d->Uniform3uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint , GLuint , GLuint )>(context->getProcAddress("glUniform3uiEXT"));
+ d->Uniform2uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint , GLuint )>(context->getProcAddress("glUniform2uiEXT"));
+ d->Uniform1uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint )>(context->getProcAddress("glUniform1uiEXT"));
+ d->GetFragDataLocationEXT = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetFragDataLocationEXT"));
+ d->BindFragDataLocationEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , const GLchar *)>(context->getProcAddress("glBindFragDataLocationEXT"));
+ d->GetUniformuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glResetMinmaxEXT"));
+ d->ResetHistogramEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glResetHistogramEXT"));
+ d->MinmaxEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLboolean )>(context->getProcAddress("glMinmaxEXT"));
+ d->HistogramEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , GLboolean )>(context->getProcAddress("glHistogramEXT"));
+ d->GetMinmaxParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMinmaxParameterivEXT"));
+ d->GetMinmaxParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetMinmaxParameterfvEXT"));
+ d->GetMinmaxEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLboolean , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetMinmaxEXT"));
+ d->GetHistogramParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetHistogramParameterivEXT"));
+ d->GetHistogramParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetHistogramParameterfvEXT"));
+ d->GetHistogramEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLboolean , GLenum , GLenum , GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLclampf )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glTextureMaterialEXT"));
+ d->TextureLightEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glTextureLightEXT"));
+ d->ApplyTextureEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLsizei *, GLenum , const GLvoid* *, GLsizei )>(context->getProcAddress("glMultiDrawElementsEXT"));
+ d->MultiDrawArraysEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *, const GLsizei *, GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glSamplePatternEXT"));
+ d->SampleMaskEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLclampf , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetColorTableParameterfvEXT"));
+ d->GetColorTableParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetColorTableParameterivEXT"));
+ d->GetColorTableEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetColorTableEXT"));
+ d->ColorTableEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLenum , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetPixelTransformParameterfvEXT"));
+ d->GetPixelTransformParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetPixelTransformParameterivEXT"));
+ d->PixelTransformParameterfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glPixelTransformParameterfvEXT"));
+ d->PixelTransformParameterivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glPixelTransformParameterivEXT"));
+ d->PixelTransformParameterfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glPixelTransformParameterfEXT"));
+ d->PixelTransformParameteriEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glPointParameterfvEXT"));
+ d->PointParameterfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glSecondaryColorPointerEXT"));
+ d->SecondaryColor3usvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLushort *)>(context->getProcAddress("glSecondaryColor3usvEXT"));
+ d->SecondaryColor3usEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLushort , GLushort , GLushort )>(context->getProcAddress("glSecondaryColor3usEXT"));
+ d->SecondaryColor3uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *)>(context->getProcAddress("glSecondaryColor3uivEXT"));
+ d->SecondaryColor3uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glSecondaryColor3uiEXT"));
+ d->SecondaryColor3ubvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(context->getProcAddress("glSecondaryColor3ubvEXT"));
+ d->SecondaryColor3ubEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte , GLubyte , GLubyte )>(context->getProcAddress("glSecondaryColor3ubEXT"));
+ d->SecondaryColor3svEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glSecondaryColor3svEXT"));
+ d->SecondaryColor3sEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glSecondaryColor3sEXT"));
+ d->SecondaryColor3ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glSecondaryColor3ivEXT"));
+ d->SecondaryColor3iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glSecondaryColor3iEXT"));
+ d->SecondaryColor3fvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glSecondaryColor3fvEXT"));
+ d->SecondaryColor3fEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glSecondaryColor3fEXT"));
+ d->SecondaryColor3dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glSecondaryColor3dvEXT"));
+ d->SecondaryColor3dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glSecondaryColor3dEXT"));
+ d->SecondaryColor3bvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLbyte *)>(context->getProcAddress("glSecondaryColor3bvEXT"));
+ d->SecondaryColor3bEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte , GLbyte , GLbyte )>(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<GLuint (QOPENGLF_APIENTRYP)(GLenum , const GLchar *)>(context->getProcAddress("glCreateShaderProgramEXT"));
+ d->ActiveProgramEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glActiveProgramEXT"));
+ d->UseShaderProgramEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glMemoryBarrierEXT"));
+ d->BindImageTextureEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLint , GLboolean , GLint , GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTexSubImage2DEXT"));
+ d->TexSubImage1DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLsizei , GLenum , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTexSubImage3DEXT"));
+ d->TexImage3DEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glClearColorIuiEXT"));
+ d->ClearColorIiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glClearColorIiEXT"));
+ d->GetTexParameterIuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint *)>(context->getProcAddress("glGetTexParameterIuivEXT"));
+ d->GetTexParameterIivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetTexParameterIivEXT"));
+ d->TexParameterIuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLuint *)>(context->getProcAddress("glTexParameterIuivEXT"));
+ d->TexParameterIivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(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<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, const GLclampf *)>(context->getProcAddress("glPrioritizeTexturesEXT"));
+ d->IsTextureEXT = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsTextureEXT"));
+ d->GenTexturesEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenTexturesEXT"));
+ d->DeleteTexturesEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteTexturesEXT"));
+ d->BindTextureEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindTextureEXT"));
+ d->AreTexturesResidentEXT = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, GLboolean *)>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64EXT *)>(context->getProcAddress("glGetQueryObjectui64vEXT"));
+ d->GetQueryObjecti64vEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint64EXT *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLsizei *, GLenum *, GLchar *)>(context->getProcAddress("glGetTransformFeedbackVaryingEXT"));
+ d->TransformFeedbackVaryingsEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLchar* *, GLenum )>(context->getProcAddress("glTransformFeedbackVaryingsEXT"));
+ d->BindBufferBaseEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint )>(context->getProcAddress("glBindBufferBaseEXT"));
+ d->BindBufferOffsetEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLintptr )>(context->getProcAddress("glBindBufferOffsetEXT"));
+ d->BindBufferRangeEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress("glBindBufferRangeEXT"));
+ d->EndTransformFeedbackEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndTransformFeedbackEXT"));
+ d->BeginTransformFeedbackEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexPointerEXT"));
+ d->TexCoordPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , GLsizei , const GLvoid *)>(context->getProcAddress("glTexCoordPointerEXT"));
+ d->NormalPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLsizei , const GLvoid *)>(context->getProcAddress("glNormalPointerEXT"));
+ d->IndexPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLsizei , const GLvoid *)>(context->getProcAddress("glIndexPointerEXT"));
+ d->GetPointervEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLvoid* *)>(context->getProcAddress("glGetPointervEXT"));
+ d->EdgeFlagPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLsizei , const GLboolean *)>(context->getProcAddress("glEdgeFlagPointerEXT"));
+ d->DrawArraysEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei )>(context->getProcAddress("glDrawArraysEXT"));
+ d->ColorPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , GLsizei , const GLvoid *)>(context->getProcAddress("glColorPointerEXT"));
+ d->ArrayElementEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLint , GLenum , GLsizei , GLintptr )>(context->getProcAddress("glVertexArrayVertexAttribLOffsetEXT"));
+ d->GetVertexAttribLdvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLdouble *)>(context->getProcAddress("glGetVertexAttribLdvEXT"));
+ d->VertexAttribLPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexAttribLPointerEXT"));
+ d->VertexAttribL4dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL4dvEXT"));
+ d->VertexAttribL3dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL3dvEXT"));
+ d->VertexAttribL2dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL2dvEXT"));
+ d->VertexAttribL1dvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttribL1dvEXT"));
+ d->VertexAttribL4dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL4dEXT"));
+ d->VertexAttribL3dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL3dEXT"));
+ d->VertexAttribL2dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttribL2dEXT"));
+ d->VertexAttribL1dEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetLocalConstantFloatvEXT"));
+ d->GetLocalConstantIntegervEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetLocalConstantIntegervEXT"));
+ d->GetLocalConstantBooleanvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean *)>(context->getProcAddress("glGetLocalConstantBooleanvEXT"));
+ d->GetInvariantFloatvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetInvariantFloatvEXT"));
+ d->GetInvariantIntegervEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetInvariantIntegervEXT"));
+ d->GetInvariantBooleanvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean *)>(context->getProcAddress("glGetInvariantBooleanvEXT"));
+ d->GetVariantPointervEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLvoid* *)>(context->getProcAddress("glGetVariantPointervEXT"));
+ d->GetVariantFloatvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetVariantFloatvEXT"));
+ d->GetVariantIntegervEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVariantIntegervEXT"));
+ d->GetVariantBooleanvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLboolean *)>(context->getProcAddress("glGetVariantBooleanvEXT"));
+ d->IsVariantEnabledEXT = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glIsVariantEnabledEXT"));
+ d->BindParameterEXT = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glBindParameterEXT"));
+ d->BindTextureUnitParameterEXT = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glBindTextureUnitParameterEXT"));
+ d->BindTexGenParameterEXT = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum )>(context->getProcAddress("glBindTexGenParameterEXT"));
+ d->BindMaterialParameterEXT = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glBindMaterialParameterEXT"));
+ d->BindLightParameterEXT = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glBindLightParameterEXT"));
+ d->DisableVariantClientStateEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glDisableVariantClientStateEXT"));
+ d->EnableVariantClientStateEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glEnableVariantClientStateEXT"));
+ d->VariantPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint , const GLvoid *)>(context->getProcAddress("glVariantPointerEXT"));
+ d->VariantuivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVariantuivEXT"));
+ d->VariantusvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLushort *)>(context->getProcAddress("glVariantusvEXT"));
+ d->VariantubvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLubyte *)>(context->getProcAddress("glVariantubvEXT"));
+ d->VariantdvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVariantdvEXT"));
+ d->VariantfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVariantfvEXT"));
+ d->VariantivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVariantivEXT"));
+ d->VariantsvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVariantsvEXT"));
+ d->VariantbvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLbyte *)>(context->getProcAddress("glVariantbvEXT"));
+ d->SetLocalConstantEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLvoid *)>(context->getProcAddress("glSetLocalConstantEXT"));
+ d->SetInvariantEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLvoid *)>(context->getProcAddress("glSetInvariantEXT"));
+ d->GenSymbolsEXT = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLuint )>(context->getProcAddress("glGenSymbolsEXT"));
+ d->ExtractComponentEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glExtractComponentEXT"));
+ d->InsertComponentEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glInsertComponentEXT"));
+ d->WriteMaskEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLenum , GLenum , GLenum )>(context->getProcAddress("glWriteMaskEXT"));
+ d->SwizzleEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLenum , GLenum , GLenum )>(context->getProcAddress("glSwizzleEXT"));
+ d->ShaderOp3EXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glShaderOp3EXT"));
+ d->ShaderOp2EXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint )>(context->getProcAddress("glShaderOp2EXT"));
+ d->ShaderOp1EXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint )>(context->getProcAddress("glShaderOp1EXT"));
+ d->DeleteVertexShaderEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glDeleteVertexShaderEXT"));
+ d->GenVertexShadersEXT = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glGenVertexShadersEXT"));
+ d->BindVertexShaderEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glBindVertexShaderEXT"));
+ d->EndVertexShaderEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndVertexShaderEXT"));
+ d->BeginVertexShaderEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexWeightPointerEXT"));
+ d->VertexWeightfvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glVertexWeightfvEXT"));
+ d->VertexWeightfEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(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<GLsync (QOPENGLF_APIENTRYP)(GLenum , GLintptr , GLbitfield )>(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<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLsizei , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetImageTransformParameterfvHP"));
+ d->GetImageTransformParameterivHP = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetImageTransformParameterivHP"));
+ d->ImageTransformParameterfvHP = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glImageTransformParameterfvHP"));
+ d->ImageTransformParameterivHP = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glImageTransformParameterivHP"));
+ d->ImageTransformParameterfHP = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glImageTransformParameterfHP"));
+ d->ImageTransformParameteriHP = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(const GLenum *, const GLsizei *, GLenum , const GLvoid* const *, GLsizei , GLint )>(context->getProcAddress("glMultiModeDrawElementsIBM"));
+ d->MultiModeDrawArraysIBM = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLenum *, const GLint *, const GLsizei *, GLsizei , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLint , const GLvoid* *, GLint )>(context->getProcAddress("glVertexPointerListIBM"));
+ d->TexCoordPointerListIBM = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLint , const GLvoid* *, GLint )>(context->getProcAddress("glTexCoordPointerListIBM"));
+ d->NormalPointerListIBM = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLvoid* *, GLint )>(context->getProcAddress("glNormalPointerListIBM"));
+ d->IndexPointerListIBM = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLvoid* *, GLint )>(context->getProcAddress("glIndexPointerListIBM"));
+ d->FogCoordPointerListIBM = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , const GLvoid* *, GLint )>(context->getProcAddress("glFogCoordPointerListIBM"));
+ d->EdgeFlagPointerListIBM = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , const GLboolean* *, GLint )>(context->getProcAddress("glEdgeFlagPointerListIBM"));
+ d->SecondaryColorPointerListIBM = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLint , const GLvoid* *, GLint )>(context->getProcAddress("glSecondaryColorPointerListIBM"));
+ d->ColorPointerListIBM = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLint , const GLvoid* *, GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLint , GLenum , const GLvoid* *)>(context->getProcAddress("glTexCoordPointervINTEL"));
+ d->ColorPointervINTEL = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , const GLvoid* *)>(context->getProcAddress("glColorPointervINTEL"));
+ d->NormalPointervINTEL = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLvoid* *)>(context->getProcAddress("glNormalPointervINTEL"));
+ d->VertexPointervINTEL = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , const GLvoid* *)>(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<void (QOPENGLF_APIENTRYP)(const void *, GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetObjectPtrLabel"));
+ d->ObjectPtrLabel = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const void *, GLsizei , const GLchar *)>(context->getProcAddress("glObjectPtrLabel"));
+ d->GetObjectLabel = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , GLsizei *, GLchar *)>(context->getProcAddress("glGetObjectLabel"));
+ d->ObjectLabel = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLchar *)>(context->getProcAddress("glObjectLabel"));
+ d->PopDebugGroup = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPopDebugGroup"));
+ d->PushDebugGroup = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLchar *)>(context->getProcAddress("glPushDebugGroup"));
+ d->GetDebugMessageLog = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLenum *, GLenum *, GLuint *, GLenum *, GLsizei *, GLchar *)>(context->getProcAddress("glGetDebugMessageLog"));
+ d->DebugMessageCallback = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLDEBUGPROC , const void *)>(context->getProcAddress("glDebugMessageCallback"));
+ d->DebugMessageInsert = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLenum , GLsizei , const GLchar *)>(context->getProcAddress("glDebugMessageInsert"));
+ d->DebugMessageControl = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLsizei , const GLuint *, GLboolean )>(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<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glWindowPos4svMESA"));
+ d->WindowPos4sMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glWindowPos4sMESA"));
+ d->WindowPos4ivMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glWindowPos4ivMESA"));
+ d->WindowPos4iMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint , GLint )>(context->getProcAddress("glWindowPos4iMESA"));
+ d->WindowPos4fvMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glWindowPos4fvMESA"));
+ d->WindowPos4fMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glWindowPos4fMESA"));
+ d->WindowPos4dvMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glWindowPos4dvMESA"));
+ d->WindowPos4dMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glWindowPos4dMESA"));
+ d->WindowPos3svMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glWindowPos3svMESA"));
+ d->WindowPos3sMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort , GLshort )>(context->getProcAddress("glWindowPos3sMESA"));
+ d->WindowPos3ivMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glWindowPos3ivMESA"));
+ d->WindowPos3iMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint , GLint )>(context->getProcAddress("glWindowPos3iMESA"));
+ d->WindowPos3fvMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glWindowPos3fvMESA"));
+ d->WindowPos3fMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glWindowPos3fMESA"));
+ d->WindowPos3dvMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glWindowPos3dvMESA"));
+ d->WindowPos3dMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glWindowPos3dMESA"));
+ d->WindowPos2svMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLshort *)>(context->getProcAddress("glWindowPos2svMESA"));
+ d->WindowPos2sMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort , GLshort )>(context->getProcAddress("glWindowPos2sMESA"));
+ d->WindowPos2ivMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLint *)>(context->getProcAddress("glWindowPos2ivMESA"));
+ d->WindowPos2iMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint )>(context->getProcAddress("glWindowPos2iMESA"));
+ d->WindowPos2fvMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *)>(context->getProcAddress("glWindowPos2fvMESA"));
+ d->WindowPos2fMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glWindowPos2fMESA"));
+ d->WindowPos2dvMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(context->getProcAddress("glWindowPos2dvMESA"));
+ d->WindowPos2dMESA = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(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<GLboolean (QOPENGLF_APIENTRYP)(GLuint64 )>(context->getProcAddress("glIsImageHandleResidentNV"));
+ d->IsTextureHandleResidentNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint64 )>(context->getProcAddress("glIsTextureHandleResidentNV"));
+ d->ProgramUniformHandleui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint64 *)>(context->getProcAddress("glProgramUniformHandleui64vNV"));
+ d->ProgramUniformHandleui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint64 )>(context->getProcAddress("glProgramUniformHandleui64NV"));
+ d->UniformHandleui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint64 *)>(context->getProcAddress("glUniformHandleui64vNV"));
+ d->UniformHandleui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint64 )>(context->getProcAddress("glUniformHandleui64NV"));
+ d->MakeImageHandleNonResidentNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint64 )>(context->getProcAddress("glMakeImageHandleNonResidentNV"));
+ d->MakeImageHandleResidentNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint64 , GLenum )>(context->getProcAddress("glMakeImageHandleResidentNV"));
+ d->GetImageHandleNV = reinterpret_cast<GLuint64 (QOPENGLF_APIENTRYP)(GLuint , GLint , GLboolean , GLint , GLenum )>(context->getProcAddress("glGetImageHandleNV"));
+ d->MakeTextureHandleNonResidentNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint64 )>(context->getProcAddress("glMakeTextureHandleNonResidentNV"));
+ d->MakeTextureHandleResidentNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint64 )>(context->getProcAddress("glMakeTextureHandleResidentNV"));
+ d->GetTextureSamplerHandleNV = reinterpret_cast<GLuint64 (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glGetTextureSamplerHandleNV"));
+ d->GetTextureHandleNV = reinterpret_cast<GLuint64 (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndConditionalRenderNV"));
+ d->BeginConditionalRenderNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint , GLint , GLint , GLint , GLuint , GLenum , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(context->getProcAddress("glDepthBoundsdNV"));
+ d->ClearDepthdNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(context->getProcAddress("glClearDepthdNV"));
+ d->DepthRangedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble , GLdouble )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(context->getProcAddress("glEvalMapsNV"));
+ d->GetMapAttribParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetMapAttribParameterfvNV"));
+ d->GetMapAttribParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetMapAttribParameterivNV"));
+ d->GetMapParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetMapParameterfvNV"));
+ d->GetMapParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetMapParameterivNV"));
+ d->GetMapControlPointsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLsizei , GLsizei , GLboolean , GLvoid *)>(context->getProcAddress("glGetMapControlPointsNV"));
+ d->MapParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glMapParameterfvNV"));
+ d->MapParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glMapParameterivNV"));
+ d->MapControlPointsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLsizei , GLsizei , GLint , GLint , GLboolean , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glTexRenderbufferNV"));
+ d->SampleMaskIndexedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLbitfield )>(context->getProcAddress("glSampleMaskIndexedNV"));
+ d->GetMultisamplefvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glSetFenceNV"));
+ d->FinishFenceNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glFinishFenceNV"));
+ d->GetFenceivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetFenceivNV"));
+ d->TestFenceNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glTestFenceNV"));
+ d->IsFenceNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsFenceNV"));
+ d->GenFencesNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenFencesNV"));
+ d->DeleteFencesNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLubyte *, GLdouble *)>(context->getProcAddress("glGetProgramNamedParameterdvNV"));
+ d->GetProgramNamedParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLubyte *, GLfloat *)>(context->getProcAddress("glGetProgramNamedParameterfvNV"));
+ d->ProgramNamedParameter4dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLubyte *, const GLdouble *)>(context->getProcAddress("glProgramNamedParameter4dvNV"));
+ d->ProgramNamedParameter4fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLubyte *, const GLfloat *)>(context->getProcAddress("glProgramNamedParameter4fvNV"));
+ d->ProgramNamedParameter4dNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLubyte *, GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramNamedParameter4dNV"));
+ d->ProgramNamedParameter4fNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLubyte *, GLfloat , GLfloat , GLfloat , GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLsizei , GLenum , GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint , GLenum )>(context->getProcAddress("glFramebufferTextureFaceEXT"));
+ d->FramebufferTextureLayerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint , GLint )>(context->getProcAddress("glFramebufferTextureLayerEXT"));
+ d->FramebufferTextureEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint , GLint )>(context->getProcAddress("glFramebufferTextureEXT"));
+ d->ProgramVertexLimitNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint *)>(context->getProcAddress("glGetProgramEnvParameterIuivNV"));
+ d->GetProgramEnvParameterIivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLint *)>(context->getProcAddress("glGetProgramEnvParameterIivNV"));
+ d->GetProgramLocalParameterIuivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint *)>(context->getProcAddress("glGetProgramLocalParameterIuivNV"));
+ d->GetProgramLocalParameterIivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLint *)>(context->getProcAddress("glGetProgramLocalParameterIivNV"));
+ d->ProgramEnvParametersI4uivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramEnvParametersI4uivNV"));
+ d->ProgramEnvParameterI4uivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLuint *)>(context->getProcAddress("glProgramEnvParameterI4uivNV"));
+ d->ProgramEnvParameterI4uiNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glProgramEnvParameterI4uiNV"));
+ d->ProgramEnvParametersI4ivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLint *)>(context->getProcAddress("glProgramEnvParametersI4ivNV"));
+ d->ProgramEnvParameterI4ivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLint *)>(context->getProcAddress("glProgramEnvParameterI4ivNV"));
+ d->ProgramEnvParameterI4iNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glProgramEnvParameterI4iNV"));
+ d->ProgramLocalParametersI4uivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramLocalParametersI4uivNV"));
+ d->ProgramLocalParameterI4uivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLuint *)>(context->getProcAddress("glProgramLocalParameterI4uivNV"));
+ d->ProgramLocalParameterI4uiNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glProgramLocalParameterI4uiNV"));
+ d->ProgramLocalParametersI4ivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLint *)>(context->getProcAddress("glProgramLocalParametersI4ivNV"));
+ d->ProgramLocalParameterI4ivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLint *)>(context->getProcAddress("glProgramLocalParameterI4ivNV"));
+ d->ProgramLocalParameterI4iNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLint , GLint , GLint , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint *)>(context->getProcAddress("glGetProgramSubroutineParameteruivNV"));
+ d->ProgramSubroutineParametersuivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glProgramUniform4ui64vNV"));
+ d->ProgramUniform3ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glProgramUniform3ui64vNV"));
+ d->ProgramUniform2ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glProgramUniform2ui64vNV"));
+ d->ProgramUniform1ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glProgramUniform1ui64vNV"));
+ d->ProgramUniform4ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint64EXT , GLuint64EXT , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glProgramUniform4ui64NV"));
+ d->ProgramUniform3ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint64EXT , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glProgramUniform3ui64NV"));
+ d->ProgramUniform2ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glProgramUniform2ui64NV"));
+ d->ProgramUniform1ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint64EXT )>(context->getProcAddress("glProgramUniform1ui64NV"));
+ d->ProgramUniform4i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint64EXT *)>(context->getProcAddress("glProgramUniform4i64vNV"));
+ d->ProgramUniform3i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint64EXT *)>(context->getProcAddress("glProgramUniform3i64vNV"));
+ d->ProgramUniform2i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint64EXT *)>(context->getProcAddress("glProgramUniform2i64vNV"));
+ d->ProgramUniform1i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLint64EXT *)>(context->getProcAddress("glProgramUniform1i64vNV"));
+ d->ProgramUniform4i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint64EXT , GLint64EXT , GLint64EXT , GLint64EXT )>(context->getProcAddress("glProgramUniform4i64NV"));
+ d->ProgramUniform3i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint64EXT , GLint64EXT , GLint64EXT )>(context->getProcAddress("glProgramUniform3i64NV"));
+ d->ProgramUniform2i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint64EXT , GLint64EXT )>(context->getProcAddress("glProgramUniform2i64NV"));
+ d->ProgramUniform1i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint64EXT )>(context->getProcAddress("glProgramUniform1i64NV"));
+ d->GetUniformi64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint64EXT *)>(context->getProcAddress("glGetUniformi64vNV"));
+ d->Uniform4ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glUniform4ui64vNV"));
+ d->Uniform3ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glUniform3ui64vNV"));
+ d->Uniform2ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glUniform2ui64vNV"));
+ d->Uniform1ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glUniform1ui64vNV"));
+ d->Uniform4ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint64EXT , GLuint64EXT , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glUniform4ui64NV"));
+ d->Uniform3ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint64EXT , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glUniform3ui64NV"));
+ d->Uniform2ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glUniform2ui64NV"));
+ d->Uniform1ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint64EXT )>(context->getProcAddress("glUniform1ui64NV"));
+ d->Uniform4i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint64EXT *)>(context->getProcAddress("glUniform4i64vNV"));
+ d->Uniform3i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint64EXT *)>(context->getProcAddress("glUniform3i64vNV"));
+ d->Uniform2i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint64EXT *)>(context->getProcAddress("glUniform2i64vNV"));
+ d->Uniform1i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLint64EXT *)>(context->getProcAddress("glUniform1i64vNV"));
+ d->Uniform4i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint64EXT , GLint64EXT , GLint64EXT , GLint64EXT )>(context->getProcAddress("glUniform4i64NV"));
+ d->Uniform3i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint64EXT , GLint64EXT , GLint64EXT )>(context->getProcAddress("glUniform3i64NV"));
+ d->Uniform2i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint64EXT , GLint64EXT )>(context->getProcAddress("glUniform2i64NV"));
+ d->Uniform1i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLint64EXT )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLhalfNV *)>(context->getProcAddress("glVertexAttribs4hvNV"));
+ d->VertexAttribs3hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLhalfNV *)>(context->getProcAddress("glVertexAttribs3hvNV"));
+ d->VertexAttribs2hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLhalfNV *)>(context->getProcAddress("glVertexAttribs2hvNV"));
+ d->VertexAttribs1hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLhalfNV *)>(context->getProcAddress("glVertexAttribs1hvNV"));
+ d->VertexAttrib4hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLhalfNV *)>(context->getProcAddress("glVertexAttrib4hvNV"));
+ d->VertexAttrib4hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLhalfNV , GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glVertexAttrib4hNV"));
+ d->VertexAttrib3hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLhalfNV *)>(context->getProcAddress("glVertexAttrib3hvNV"));
+ d->VertexAttrib3hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glVertexAttrib3hNV"));
+ d->VertexAttrib2hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLhalfNV *)>(context->getProcAddress("glVertexAttrib2hvNV"));
+ d->VertexAttrib2hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLhalfNV , GLhalfNV )>(context->getProcAddress("glVertexAttrib2hNV"));
+ d->VertexAttrib1hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLhalfNV *)>(context->getProcAddress("glVertexAttrib1hvNV"));
+ d->VertexAttrib1hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLhalfNV )>(context->getProcAddress("glVertexAttrib1hNV"));
+ d->VertexWeighthvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glVertexWeighthvNV"));
+ d->VertexWeighthNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV )>(context->getProcAddress("glVertexWeighthNV"));
+ d->SecondaryColor3hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glSecondaryColor3hvNV"));
+ d->SecondaryColor3hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glSecondaryColor3hNV"));
+ d->FogCoordhvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glFogCoordhvNV"));
+ d->FogCoordhNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV )>(context->getProcAddress("glFogCoordhNV"));
+ d->MultiTexCoord4hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLhalfNV *)>(context->getProcAddress("glMultiTexCoord4hvNV"));
+ d->MultiTexCoord4hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLhalfNV , GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glMultiTexCoord4hNV"));
+ d->MultiTexCoord3hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLhalfNV *)>(context->getProcAddress("glMultiTexCoord3hvNV"));
+ d->MultiTexCoord3hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glMultiTexCoord3hNV"));
+ d->MultiTexCoord2hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLhalfNV *)>(context->getProcAddress("glMultiTexCoord2hvNV"));
+ d->MultiTexCoord2hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLhalfNV , GLhalfNV )>(context->getProcAddress("glMultiTexCoord2hNV"));
+ d->MultiTexCoord1hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLhalfNV *)>(context->getProcAddress("glMultiTexCoord1hvNV"));
+ d->MultiTexCoord1hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLhalfNV )>(context->getProcAddress("glMultiTexCoord1hNV"));
+ d->TexCoord4hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glTexCoord4hvNV"));
+ d->TexCoord4hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glTexCoord4hNV"));
+ d->TexCoord3hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glTexCoord3hvNV"));
+ d->TexCoord3hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glTexCoord3hNV"));
+ d->TexCoord2hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glTexCoord2hvNV"));
+ d->TexCoord2hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV )>(context->getProcAddress("glTexCoord2hNV"));
+ d->TexCoord1hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glTexCoord1hvNV"));
+ d->TexCoord1hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV )>(context->getProcAddress("glTexCoord1hNV"));
+ d->Color4hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glColor4hvNV"));
+ d->Color4hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glColor4hNV"));
+ d->Color3hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glColor3hvNV"));
+ d->Color3hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glColor3hNV"));
+ d->Normal3hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glNormal3hvNV"));
+ d->Normal3hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glNormal3hNV"));
+ d->Vertex4hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glVertex4hvNV"));
+ d->Vertex4hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glVertex4hNV"));
+ d->Vertex3hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glVertex3hvNV"));
+ d->Vertex3hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV , GLhalfNV )>(context->getProcAddress("glVertex3hNV"));
+ d->Vertex2hvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLhalfNV *)>(context->getProcAddress("glVertex2hvNV"));
+ d->Vertex2hNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLhalfNV , GLhalfNV )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetOcclusionQueryuivNV"));
+ d->GetOcclusionQueryivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetOcclusionQueryivNV"));
+ d->EndOcclusionQueryNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndOcclusionQueryNV"));
+ d->BeginOcclusionQueryNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glBeginOcclusionQueryNV"));
+ d->IsOcclusionQueryNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsOcclusionQueryNV"));
+ d->DeleteOcclusionQueriesNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteOcclusionQueriesNV"));
+ d->GenOcclusionQueriesNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei , const GLuint *)>(context->getProcAddress("glProgramBufferParametersIuivNV"));
+ d->ProgramBufferParametersIivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei , const GLint *)>(context->getProcAddress("glProgramBufferParametersIivNV"));
+ d->ProgramBufferParametersfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLsizei , const GLfloat *)>(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<GLboolean (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei , GLfloat , GLfloat *, GLfloat *, GLfloat *, GLfloat *)>(context->getProcAddress("glPointAlongPathNV"));
+ d->GetPathLengthNV = reinterpret_cast<GLfloat (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei )>(context->getProcAddress("glGetPathLengthNV"));
+ d->IsPointInStrokePathNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat )>(context->getProcAddress("glIsPointInStrokePathNV"));
+ d->IsPointInFillPathNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLfloat , GLfloat )>(context->getProcAddress("glIsPointInFillPathNV"));
+ d->GetPathTexGenfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetPathTexGenfvNV"));
+ d->GetPathTexGenivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetPathTexGenivNV"));
+ d->GetPathColorGenfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetPathColorGenfvNV"));
+ d->GetPathColorGenivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetPathColorGenivNV"));
+ d->GetPathSpacingNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLenum , const GLvoid *, GLuint , GLfloat , GLfloat , GLenum , GLfloat *)>(context->getProcAddress("glGetPathSpacingNV"));
+ d->GetPathMetricRangeNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield , GLuint , GLsizei , GLsizei , GLfloat *)>(context->getProcAddress("glGetPathMetricRangeNV"));
+ d->GetPathMetricsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield , GLsizei , GLenum , const GLvoid *, GLuint , GLsizei , GLfloat *)>(context->getProcAddress("glGetPathMetricsNV"));
+ d->GetPathDashArrayNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat *)>(context->getProcAddress("glGetPathDashArrayNV"));
+ d->GetPathCoordsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat *)>(context->getProcAddress("glGetPathCoordsNV"));
+ d->GetPathCommandsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLubyte *)>(context->getProcAddress("glGetPathCommandsNV"));
+ d->GetPathParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetPathParameterfvNV"));
+ d->GetPathParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetPathParameterivNV"));
+ d->CoverStrokePathInstancedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLenum , const GLvoid *, GLuint , GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glCoverStrokePathInstancedNV"));
+ d->CoverFillPathInstancedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLenum , const GLvoid *, GLuint , GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glCoverFillPathInstancedNV"));
+ d->CoverStrokePathNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glCoverStrokePathNV"));
+ d->CoverFillPathNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glCoverFillPathNV"));
+ d->PathFogGenNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glPathFogGenNV"));
+ d->PathTexGenNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , const GLfloat *)>(context->getProcAddress("glPathTexGenNV"));
+ d->PathColorGenNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glPathColorGenNV"));
+ d->PathCoverDepthFuncNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glPathCoverDepthFuncNV"));
+ d->StencilStrokePathInstancedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLenum , const GLvoid *, GLuint , GLint , GLuint , GLenum , const GLfloat *)>(context->getProcAddress("glStencilStrokePathInstancedNV"));
+ d->StencilFillPathInstancedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLenum , const GLvoid *, GLuint , GLenum , GLuint , GLenum , const GLfloat *)>(context->getProcAddress("glStencilFillPathInstancedNV"));
+ d->StencilStrokePathNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint )>(context->getProcAddress("glStencilStrokePathNV"));
+ d->StencilFillPathNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint )>(context->getProcAddress("glStencilFillPathNV"));
+ d->PathStencilDepthOffsetNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat )>(context->getProcAddress("glPathStencilDepthOffsetNV"));
+ d->PathStencilFuncNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLuint )>(context->getProcAddress("glPathStencilFuncNV"));
+ d->PathDashArrayNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glPathDashArrayNV"));
+ d->PathParameterfNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat )>(context->getProcAddress("glPathParameterfNV"));
+ d->PathParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLfloat *)>(context->getProcAddress("glPathParameterfvNV"));
+ d->PathParameteriNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(context->getProcAddress("glPathParameteriNV"));
+ d->PathParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLint *)>(context->getProcAddress("glPathParameterivNV"));
+ d->TransformPathNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , const GLfloat *)>(context->getProcAddress("glTransformPathNV"));
+ d->InterpolatePathsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLfloat )>(context->getProcAddress("glInterpolatePathsNV"));
+ d->CopyPathNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glCopyPathNV"));
+ d->WeightPathsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLuint *, const GLfloat *)>(context->getProcAddress("glWeightPathsNV"));
+ d->PathGlyphRangeNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLvoid *, GLbitfield , GLuint , GLsizei , GLenum , GLuint , GLfloat )>(context->getProcAddress("glPathGlyphRangeNV"));
+ d->PathGlyphsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLvoid *, GLbitfield , GLsizei , GLenum , const GLvoid *, GLenum , GLuint , GLfloat )>(context->getProcAddress("glPathGlyphsNV"));
+ d->PathStringNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glPathStringNV"));
+ d->PathSubCoordsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei , GLenum , const GLvoid *)>(context->getProcAddress("glPathSubCoordsNV"));
+ d->PathSubCommandsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLsizei , GLsizei , const GLubyte *, GLsizei , GLenum , const GLvoid *)>(context->getProcAddress("glPathSubCommandsNV"));
+ d->PathCoordsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , GLenum , const GLvoid *)>(context->getProcAddress("glPathCoordsNV"));
+ d->PathCommandsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLubyte *, GLsizei , GLenum , const GLvoid *)>(context->getProcAddress("glPathCommandsNV"));
+ d->IsPathNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsPathNV"));
+ d->DeletePathsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei )>(context->getProcAddress("glDeletePathsNV"));
+ d->GenPathsNV = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glFlushPixelDataRangeNV"));
+ d->PixelDataRangeNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glPointParameterivNV"));
+ d->PointParameteriNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64EXT *)>(context->getProcAddress("glGetVideoui64vNV"));
+ d->GetVideoi64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint64EXT *)>(context->getProcAddress("glGetVideoi64vNV"));
+ d->GetVideouivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetVideouivNV"));
+ d->GetVideoivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVideoivNV"));
+ d->PresentFrameDualFillNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint64EXT , GLuint , GLuint , GLenum , GLenum , GLuint , GLenum , GLuint , GLenum , GLuint , GLenum , GLuint )>(context->getProcAddress("glPresentFrameDualFillNV"));
+ d->PresentFrameKeyedNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint64EXT , GLuint , GLuint , GLenum , GLenum , GLuint , GLuint , GLenum , GLuint , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glPrimitiveRestartIndexNV"));
+ d->PrimitiveRestartNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetFinalCombinerInputParameterivNV"));
+ d->GetFinalCombinerInputParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetFinalCombinerInputParameterfvNV"));
+ d->GetCombinerOutputParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetCombinerOutputParameterivNV"));
+ d->GetCombinerOutputParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetCombinerOutputParameterfvNV"));
+ d->GetCombinerInputParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum , GLint *)>(context->getProcAddress("glGetCombinerInputParameterivNV"));
+ d->GetCombinerInputParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetCombinerInputParameterfvNV"));
+ d->FinalCombinerInputNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum )>(context->getProcAddress("glFinalCombinerInputNV"));
+ d->CombinerOutputNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum , GLenum , GLenum , GLenum , GLboolean , GLboolean , GLboolean )>(context->getProcAddress("glCombinerOutputNV"));
+ d->CombinerInputNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLenum , GLenum , GLenum )>(context->getProcAddress("glCombinerInputNV"));
+ d->CombinerParameteriNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glCombinerParameteriNV"));
+ d->CombinerParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glCombinerParameterivNV"));
+ d->CombinerParameterfNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glCombinerParameterfNV"));
+ d->CombinerParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetCombinerStageParameterfvNV"));
+ d->CombinerStageParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glProgramUniformui64vNV"));
+ d->ProgramUniformui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint64EXT )>(context->getProcAddress("glProgramUniformui64NV"));
+ d->GetUniformui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLuint64EXT *)>(context->getProcAddress("glGetUniformui64vNV"));
+ d->Uniformui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLsizei , const GLuint64EXT *)>(context->getProcAddress("glUniformui64vNV"));
+ d->Uniformui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLuint64EXT )>(context->getProcAddress("glUniformui64NV"));
+ d->GetIntegerui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint64EXT *)>(context->getProcAddress("glGetIntegerui64vNV"));
+ d->GetNamedBufferParameterui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64EXT *)>(context->getProcAddress("glGetNamedBufferParameterui64vNV"));
+ d->GetBufferParameterui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLuint64EXT *)>(context->getProcAddress("glGetBufferParameterui64vNV"));
+ d->IsNamedBufferResidentNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsNamedBufferResidentNV"));
+ d->MakeNamedBufferNonResidentNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glMakeNamedBufferNonResidentNV"));
+ d->MakeNamedBufferResidentNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum )>(context->getProcAddress("glMakeNamedBufferResidentNV"));
+ d->IsBufferResidentNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glIsBufferResidentNV"));
+ d->MakeBufferNonResidentNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glMakeBufferNonResidentNV"));
+ d->MakeBufferResidentNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTextureImage3DMultisampleCoverageNV"));
+ d->TextureImage2DMultisampleCoverageNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTextureImage2DMultisampleCoverageNV"));
+ d->TextureImage3DMultisampleNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTextureImage3DMultisampleNV"));
+ d->TextureImage2DMultisampleNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTextureImage2DMultisampleNV"));
+ d->TexImage3DMultisampleCoverageNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLsizei , GLint , GLsizei , GLsizei , GLsizei , GLboolean )>(context->getProcAddress("glTexImage3DMultisampleCoverageNV"));
+ d->TexImage2DMultisampleCoverageNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , GLsizei , GLint , GLsizei , GLsizei , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLsizei , const GLint *, GLsizei , const GLint *, GLenum )>(context->getProcAddress("glTransformFeedbackStreamAttribsNV"));
+ d->GetTransformFeedbackVaryingNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLint *)>(context->getProcAddress("glGetTransformFeedbackVaryingNV"));
+ d->GetActiveVaryingNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLsizei , GLsizei *, GLsizei *, GLenum *, GLchar *)>(context->getProcAddress("glGetActiveVaryingNV"));
+ d->GetVaryingLocationNV = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glGetVaryingLocationNV"));
+ d->ActiveVaryingNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLchar *)>(context->getProcAddress("glActiveVaryingNV"));
+ d->TransformFeedbackVaryingsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLint *, GLenum )>(context->getProcAddress("glTransformFeedbackVaryingsNV"));
+ d->BindBufferBaseNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint )>(context->getProcAddress("glBindBufferBaseNV"));
+ d->BindBufferOffsetNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLintptr )>(context->getProcAddress("glBindBufferOffsetNV"));
+ d->BindBufferRangeNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint , GLintptr , GLsizeiptr )>(context->getProcAddress("glBindBufferRangeNV"));
+ d->TransformFeedbackAttribsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *, GLenum )>(context->getProcAddress("glTransformFeedbackAttribsNV"));
+ d->EndTransformFeedbackNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glEndTransformFeedbackNV"));
+ d->BeginTransformFeedbackNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glDrawTransformFeedbackNV"));
+ d->ResumeTransformFeedbackNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glResumeTransformFeedbackNV"));
+ d->PauseTransformFeedbackNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glPauseTransformFeedbackNV"));
+ d->IsTransformFeedbackNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsTransformFeedbackNV"));
+ d->GenTransformFeedbacksNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenTransformFeedbacksNV"));
+ d->DeleteTransformFeedbacksNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteTransformFeedbacksNV"));
+ d->BindTransformFeedbackNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLsizei , const GLvdpauSurfaceNV *)>(context->getProcAddress("glVDPAUUnmapSurfacesNV"));
+ d->VDPAUMapSurfacesNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLvdpauSurfaceNV *)>(context->getProcAddress("glVDPAUMapSurfacesNV"));
+ d->VDPAUSurfaceAccessNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLvdpauSurfaceNV , GLenum )>(context->getProcAddress("glVDPAUSurfaceAccessNV"));
+ d->VDPAUGetSurfaceivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLvdpauSurfaceNV , GLenum , GLsizei , GLsizei *, GLint *)>(context->getProcAddress("glVDPAUGetSurfaceivNV"));
+ d->VDPAUUnregisterSurfaceNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLvdpauSurfaceNV )>(context->getProcAddress("glVDPAUUnregisterSurfaceNV"));
+ d->VDPAUIsSurfaceNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLvdpauSurfaceNV )>(context->getProcAddress("glVDPAUIsSurfaceNV"));
+ d->VDPAURegisterOutputSurfaceNV = reinterpret_cast<GLvdpauSurfaceNV (QOPENGLF_APIENTRYP)(GLvoid *, GLenum , GLsizei , const GLuint *)>(context->getProcAddress("glVDPAURegisterOutputSurfaceNV"));
+ d->VDPAURegisterVideoSurfaceNV = reinterpret_cast<GLvdpauSurfaceNV (QOPENGLF_APIENTRYP)(const GLvoid *, GLenum , GLsizei , const GLuint *)>(context->getProcAddress("glVDPAURegisterVideoSurfaceNV"));
+ d->VDPAUFiniNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glVDPAUFiniNV"));
+ d->VDPAUInitNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLvoid *, const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLsizei , const GLvoid *)>(context->getProcAddress("glVertexArrayRangeNV"));
+ d->FlushVertexArrayRangeNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLsizei )>(context->getProcAddress("glVertexAttribLFormatNV"));
+ d->GetVertexAttribLui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint64EXT *)>(context->getProcAddress("glGetVertexAttribLui64vNV"));
+ d->GetVertexAttribLi64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint64EXT *)>(context->getProcAddress("glGetVertexAttribLi64vNV"));
+ d->VertexAttribL4ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint64EXT *)>(context->getProcAddress("glVertexAttribL4ui64vNV"));
+ d->VertexAttribL3ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint64EXT *)>(context->getProcAddress("glVertexAttribL3ui64vNV"));
+ d->VertexAttribL2ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint64EXT *)>(context->getProcAddress("glVertexAttribL2ui64vNV"));
+ d->VertexAttribL1ui64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint64EXT *)>(context->getProcAddress("glVertexAttribL1ui64vNV"));
+ d->VertexAttribL4ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint64EXT , GLuint64EXT , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glVertexAttribL4ui64NV"));
+ d->VertexAttribL3ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint64EXT , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glVertexAttribL3ui64NV"));
+ d->VertexAttribL2ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint64EXT , GLuint64EXT )>(context->getProcAddress("glVertexAttribL2ui64NV"));
+ d->VertexAttribL1ui64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint64EXT )>(context->getProcAddress("glVertexAttribL1ui64NV"));
+ d->VertexAttribL4i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint64EXT *)>(context->getProcAddress("glVertexAttribL4i64vNV"));
+ d->VertexAttribL3i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint64EXT *)>(context->getProcAddress("glVertexAttribL3i64vNV"));
+ d->VertexAttribL2i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint64EXT *)>(context->getProcAddress("glVertexAttribL2i64vNV"));
+ d->VertexAttribL1i64vNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint64EXT *)>(context->getProcAddress("glVertexAttribL1i64vNV"));
+ d->VertexAttribL4i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint64EXT , GLint64EXT , GLint64EXT , GLint64EXT )>(context->getProcAddress("glVertexAttribL4i64NV"));
+ d->VertexAttribL3i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint64EXT , GLint64EXT , GLint64EXT )>(context->getProcAddress("glVertexAttribL3i64NV"));
+ d->VertexAttribL2i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint64EXT , GLint64EXT )>(context->getProcAddress("glVertexAttribL2i64NV"));
+ d->VertexAttribL1i64NV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint64EXT )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint64EXT *)>(context->getProcAddress("glGetIntegerui64i_vNV"));
+ d->VertexAttribIFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLsizei )>(context->getProcAddress("glVertexAttribIFormatNV"));
+ d->VertexAttribFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLboolean , GLsizei )>(context->getProcAddress("glVertexAttribFormatNV"));
+ d->FogCoordFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei )>(context->getProcAddress("glFogCoordFormatNV"));
+ d->SecondaryColorFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei )>(context->getProcAddress("glSecondaryColorFormatNV"));
+ d->EdgeFlagFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei )>(context->getProcAddress("glEdgeFlagFormatNV"));
+ d->TexCoordFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei )>(context->getProcAddress("glTexCoordFormatNV"));
+ d->IndexFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei )>(context->getProcAddress("glIndexFormatNV"));
+ d->ColorFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei )>(context->getProcAddress("glColorFormatNV"));
+ d->NormalFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei )>(context->getProcAddress("glNormalFormatNV"));
+ d->VertexFormatNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint , GLenum , GLsizei )>(context->getProcAddress("glVertexFormatNV"));
+ d->BufferAddressRangeNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLuint64EXT , GLsizeiptr )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLubyte *)>(context->getProcAddress("glVertexAttribs4ubvNV"));
+ d->VertexAttribs4svNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLshort *)>(context->getProcAddress("glVertexAttribs4svNV"));
+ d->VertexAttribs4fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glVertexAttribs4fvNV"));
+ d->VertexAttribs4dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLdouble *)>(context->getProcAddress("glVertexAttribs4dvNV"));
+ d->VertexAttribs3svNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLshort *)>(context->getProcAddress("glVertexAttribs3svNV"));
+ d->VertexAttribs3fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glVertexAttribs3fvNV"));
+ d->VertexAttribs3dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLdouble *)>(context->getProcAddress("glVertexAttribs3dvNV"));
+ d->VertexAttribs2svNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLshort *)>(context->getProcAddress("glVertexAttribs2svNV"));
+ d->VertexAttribs2fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glVertexAttribs2fvNV"));
+ d->VertexAttribs2dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLdouble *)>(context->getProcAddress("glVertexAttribs2dvNV"));
+ d->VertexAttribs1svNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLshort *)>(context->getProcAddress("glVertexAttribs1svNV"));
+ d->VertexAttribs1fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glVertexAttribs1fvNV"));
+ d->VertexAttribs1dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei , const GLdouble *)>(context->getProcAddress("glVertexAttribs1dvNV"));
+ d->VertexAttrib4ubvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLubyte *)>(context->getProcAddress("glVertexAttrib4ubvNV"));
+ d->VertexAttrib4ubNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLubyte , GLubyte , GLubyte , GLubyte )>(context->getProcAddress("glVertexAttrib4ubNV"));
+ d->VertexAttrib4svNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib4svNV"));
+ d->VertexAttrib4sNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib4sNV"));
+ d->VertexAttrib4fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib4fvNV"));
+ d->VertexAttrib4fNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib4fNV"));
+ d->VertexAttrib4dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib4dvNV"));
+ d->VertexAttrib4dNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib4dNV"));
+ d->VertexAttrib3svNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib3svNV"));
+ d->VertexAttrib3sNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib3sNV"));
+ d->VertexAttrib3fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib3fvNV"));
+ d->VertexAttrib3fNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib3fNV"));
+ d->VertexAttrib3dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib3dvNV"));
+ d->VertexAttrib3dNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib3dNV"));
+ d->VertexAttrib2svNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib2svNV"));
+ d->VertexAttrib2sNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort , GLshort )>(context->getProcAddress("glVertexAttrib2sNV"));
+ d->VertexAttrib2fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib2fvNV"));
+ d->VertexAttrib2fNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat )>(context->getProcAddress("glVertexAttrib2fNV"));
+ d->VertexAttrib2dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib2dvNV"));
+ d->VertexAttrib2dNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble , GLdouble )>(context->getProcAddress("glVertexAttrib2dNV"));
+ d->VertexAttrib1svNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttrib1svNV"));
+ d->VertexAttrib1sNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLshort )>(context->getProcAddress("glVertexAttrib1sNV"));
+ d->VertexAttrib1fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLfloat *)>(context->getProcAddress("glVertexAttrib1fvNV"));
+ d->VertexAttrib1fNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat )>(context->getProcAddress("glVertexAttrib1fNV"));
+ d->VertexAttrib1dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLdouble *)>(context->getProcAddress("glVertexAttrib1dvNV"));
+ d->VertexAttrib1dNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLdouble )>(context->getProcAddress("glVertexAttrib1dNV"));
+ d->VertexAttribPointerNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexAttribPointerNV"));
+ d->TrackMatrixNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLenum )>(context->getProcAddress("glTrackMatrixNV"));
+ d->RequestResidentProgramsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glRequestResidentProgramsNV"));
+ d->ProgramParameters4fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLfloat *)>(context->getProcAddress("glProgramParameters4fvNV"));
+ d->ProgramParameters4dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLdouble *)>(context->getProcAddress("glProgramParameters4dvNV"));
+ d->ProgramParameter4fvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLfloat *)>(context->getProcAddress("glProgramParameter4fvNV"));
+ d->ProgramParameter4fNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glProgramParameter4fNV"));
+ d->ProgramParameter4dvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLdouble *)>(context->getProcAddress("glProgramParameter4dvNV"));
+ d->ProgramParameter4dNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLdouble , GLdouble , GLdouble , GLdouble )>(context->getProcAddress("glProgramParameter4dNV"));
+ d->LoadProgramNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLsizei , const GLubyte *)>(context->getProcAddress("glLoadProgramNV"));
+ d->IsProgramNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsProgramNV"));
+ d->GetVertexAttribPointervNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLvoid* *)>(context->getProcAddress("glGetVertexAttribPointervNV"));
+ d->GetVertexAttribivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVertexAttribivNV"));
+ d->GetVertexAttribfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetVertexAttribfvNV"));
+ d->GetVertexAttribdvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLdouble *)>(context->getProcAddress("glGetVertexAttribdvNV"));
+ d->GetTrackMatrixivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetTrackMatrixivNV"));
+ d->GetProgramStringNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLubyte *)>(context->getProcAddress("glGetProgramStringNV"));
+ d->GetProgramivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetProgramivNV"));
+ d->GetProgramParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetProgramParameterfvNV"));
+ d->GetProgramParameterdvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , GLenum , GLdouble *)>(context->getProcAddress("glGetProgramParameterdvNV"));
+ d->GenProgramsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLuint *)>(context->getProcAddress("glGenProgramsNV"));
+ d->ExecuteProgramNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint , const GLfloat *)>(context->getProcAddress("glExecuteProgramNV"));
+ d->DeleteProgramsNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *)>(context->getProcAddress("glDeleteProgramsNV"));
+ d->BindProgramNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLuint )>(context->getProcAddress("glBindProgramNV"));
+ d->AreProgramsResidentNV = reinterpret_cast<GLboolean (QOPENGLF_APIENTRYP)(GLsizei , const GLuint *, GLboolean *)>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLuint *)>(context->getProcAddress("glGetVertexAttribIuivEXT"));
+ d->GetVertexAttribIivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVertexAttribIivEXT"));
+ d->VertexAttribIPointerEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLenum , GLsizei , const GLvoid *)>(context->getProcAddress("glVertexAttribIPointerEXT"));
+ d->VertexAttribI4usvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLushort *)>(context->getProcAddress("glVertexAttribI4usvEXT"));
+ d->VertexAttribI4ubvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLubyte *)>(context->getProcAddress("glVertexAttribI4ubvEXT"));
+ d->VertexAttribI4svEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLshort *)>(context->getProcAddress("glVertexAttribI4svEXT"));
+ d->VertexAttribI4bvEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLbyte *)>(context->getProcAddress("glVertexAttribI4bvEXT"));
+ d->VertexAttribI4uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttribI4uivEXT"));
+ d->VertexAttribI3uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttribI3uivEXT"));
+ d->VertexAttribI2uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttribI2uivEXT"));
+ d->VertexAttribI1uivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLuint *)>(context->getProcAddress("glVertexAttribI1uivEXT"));
+ d->VertexAttribI4ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttribI4ivEXT"));
+ d->VertexAttribI3ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttribI3ivEXT"));
+ d->VertexAttribI2ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttribI2ivEXT"));
+ d->VertexAttribI1ivEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , const GLint *)>(context->getProcAddress("glVertexAttribI1ivEXT"));
+ d->VertexAttribI4uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glVertexAttribI4uiEXT"));
+ d->VertexAttribI3uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint , GLuint )>(context->getProcAddress("glVertexAttribI3uiEXT"));
+ d->VertexAttribI2uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLuint )>(context->getProcAddress("glVertexAttribI2uiEXT"));
+ d->VertexAttribI1uiEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint )>(context->getProcAddress("glVertexAttribI1uiEXT"));
+ d->VertexAttribI4iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint , GLint )>(context->getProcAddress("glVertexAttribI4iEXT"));
+ d->VertexAttribI3iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint , GLint )>(context->getProcAddress("glVertexAttribI3iEXT"));
+ d->VertexAttribI2iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint , GLint )>(context->getProcAddress("glVertexAttribI2iEXT"));
+ d->VertexAttribI1iEXT = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , const GLdouble *)>(context->getProcAddress("glVideoCaptureStreamParameterdvNV"));
+ d->VideoCaptureStreamParameterfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , const GLfloat *)>(context->getProcAddress("glVideoCaptureStreamParameterfvNV"));
+ d->VideoCaptureStreamParameterivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , const GLint *)>(context->getProcAddress("glVideoCaptureStreamParameterivNV"));
+ d->VideoCaptureNV = reinterpret_cast<GLenum (QOPENGLF_APIENTRYP)(GLuint , GLuint *, GLuint64EXT *)>(context->getProcAddress("glVideoCaptureNV"));
+ d->GetVideoCaptureStreamdvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLdouble *)>(context->getProcAddress("glGetVideoCaptureStreamdvNV"));
+ d->GetVideoCaptureStreamfvNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLfloat *)>(context->getProcAddress("glGetVideoCaptureStreamfvNV"));
+ d->GetVideoCaptureStreamivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVideoCaptureStreamivNV"));
+ d->GetVideoCaptureivNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetVideoCaptureivNV"));
+ d->EndVideoCaptureNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glEndVideoCaptureNV"));
+ d->BindVideoCaptureStreamTextureNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLenum , GLuint )>(context->getProcAddress("glBindVideoCaptureStreamTextureNV"));
+ d->BindVideoCaptureStreamBufferNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLuint , GLenum , GLintptrARB )>(context->getProcAddress("glBindVideoCaptureStreamBufferNV"));
+ d->BeginVideoCaptureNV = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(context->getProcAddress("glGetDetailTexFuncSGIS"));
+ d->DetailTexFuncSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLfloat *)>(context->getProcAddress("glGetFogFuncSGIS"));
+ d->FogFuncSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(context->getProcAddress("glSamplePatternSGIS"));
+ d->SampleMaskSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLclampf , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(context->getProcAddress("glGetPixelTexGenParameterfvSGIS"));
+ d->GetPixelTexGenParameterivSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint *)>(context->getProcAddress("glGetPixelTexGenParameterivSGIS"));
+ d->PixelTexGenParameterfvSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glPixelTexGenParameterfvSGIS"));
+ d->PixelTexGenParameterfSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glPixelTexGenParameterfSGIS"));
+ d->PixelTexGenParameterivSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glPixelTexGenParameterivSGIS"));
+ d->PixelTexGenParameteriSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glPointParameterfvSGIS"));
+ d->PointParameterfSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat *)>(context->getProcAddress("glGetSharpenTexFuncSGIS"));
+ d->SharpenTexFuncSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLint , GLint , GLint , GLint , GLsizei , GLsizei , GLsizei , GLsizei , GLenum , GLenum , const GLvoid *)>(context->getProcAddress("glTexSubImage4DSGIS"));
+ d->TexImage4DSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLenum , GLsizei , GLsizei , GLsizei , GLsizei , GLint , GLenum , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLboolean , GLboolean , GLboolean , GLboolean )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , const GLfloat *)>(context->getProcAddress("glTexFilterFuncSGIS"));
+ d->GetTexFilterFuncSGIS = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(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<GLboolean (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glIsAsyncMarkerSGIX"));
+ d->DeleteAsyncMarkersSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLsizei )>(context->getProcAddress("glDeleteAsyncMarkersSGIX"));
+ d->GenAsyncMarkersSGIX = reinterpret_cast<GLuint (QOPENGLF_APIENTRYP)(GLsizei )>(context->getProcAddress("glGenAsyncMarkersSGIX"));
+ d->PollAsyncSGIX = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint *)>(context->getProcAddress("glPollAsyncSGIX"));
+ d->FinishAsyncSGIX = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLuint *)>(context->getProcAddress("glFinishAsyncSGIX"));
+ d->AsyncMarkerSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glLightEnviSGIX"));
+ d->GetFragmentMaterialivSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetFragmentMaterialivSGIX"));
+ d->GetFragmentMaterialfvSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetFragmentMaterialfvSGIX"));
+ d->GetFragmentLightivSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetFragmentLightivSGIX"));
+ d->GetFragmentLightfvSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetFragmentLightfvSGIX"));
+ d->FragmentMaterialivSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glFragmentMaterialivSGIX"));
+ d->FragmentMaterialiSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glFragmentMaterialiSGIX"));
+ d->FragmentMaterialfvSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glFragmentMaterialfvSGIX"));
+ d->FragmentMaterialfSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glFragmentMaterialfSGIX"));
+ d->FragmentLightModelivSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glFragmentLightModelivSGIX"));
+ d->FragmentLightModeliSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glFragmentLightModeliSGIX"));
+ d->FragmentLightModelfvSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glFragmentLightModelfvSGIX"));
+ d->FragmentLightModelfSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(context->getProcAddress("glFragmentLightModelfSGIX"));
+ d->FragmentLightivSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glFragmentLightivSGIX"));
+ d->FragmentLightiSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint )>(context->getProcAddress("glFragmentLightiSGIX"));
+ d->FragmentLightfvSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glFragmentLightfvSGIX"));
+ d->FragmentLightfSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat )>(context->getProcAddress("glFragmentLightfSGIX"));
+ d->FragmentColorMaterialSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLint )>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)(GLint )>(context->getProcAddress("glStopInstrumentsSGIX"));
+ d->StartInstrumentsSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)()>(context->getProcAddress("glStartInstrumentsSGIX"));
+ d->ReadInstrumentsSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(context->getProcAddress("glReadInstrumentsSGIX"));
+ d->PollInstrumentsSGIX = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)(GLint *)>(context->getProcAddress("glPollInstrumentsSGIX"));
+ d->InstrumentsBufferSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLsizei , GLint *)>(context->getProcAddress("glInstrumentsBufferSGIX"));
+ d->GetInstrumentsSGIX = reinterpret_cast<GLint (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLint *)>(context->getProcAddress("glListParameterivSGIX"));
+ d->ListParameteriSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint )>(context->getProcAddress("glListParameteriSGIX"));
+ d->ListParameterfvSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , const GLfloat *)>(context->getProcAddress("glListParameterfvSGIX"));
+ d->ListParameterfSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat )>(context->getProcAddress("glListParameterfSGIX"));
+ d->GetListParameterivSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLint *)>(context->getProcAddress("glGetListParameterivSGIX"));
+ d->GetListParameterfvSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLenum , GLfloat *)>(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<void (QOPENGLF_APIENTRYP)(GLenum )>(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<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glLoadIdentityDeformationMapSGIX"));
+ d->DeformSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbitfield )>(context->getProcAddress("glDeformSGIX"));
+ d->DeformationMap3fSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat , GLfloat , GLint , GLint , GLfloat , GLfloat , GLint , GLint , GLfloat , GLfloat , GLint , GLint , const GLfloat *)>(context->getProcAddress("glDeformationMap3fSGIX"));
+ d->DeformationMap3dSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLdouble , GLdouble , GLint , GLint , GLdouble , GLdouble , GLint , GLint , GLdouble , GLdouble , GLint , GLint , const GLdouble *)>(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<void (QOPENGLF_APIENTRYP)(const GLdouble *)>(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<void (QOPENGLF_APIENTRYP)(GLenum , const GLint *)>(context->getProcAddress("glSpriteParameterivSGIX"));
+ d->SpriteParameteriSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLint )>(context->getProcAddress("glSpriteParameteriSGIX"));
+ d->SpriteParameterfvSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , const GLfloat *)>(context->getProcAddress("glSpriteParameterfvSGIX"));
+ d->SpriteParameterfSGIX = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLfloat )>(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<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint *)>(context->getProcAddress("glGetColorTableParameterivSGI"));
+ d->GetColorTableParameterfvSGI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLfloat *)>(context->getProcAddress("glGetColorTableParameterfvSGI"));
+ d->GetColorTableSGI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLenum , GLvoid *)>(context->getProcAddress("glGetColorTableSGI"));
+ d->CopyColorTableSGI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLint , GLint , GLsizei )>(context->getProcAddress("glCopyColorTableSGI"));
+ d->ColorTableParameterivSGI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLint *)>(context->getProcAddress("glColorTableParameterivSGI"));
+ d->ColorTableParameterfvSGI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , const GLfloat *)>(context->getProcAddress("glColorTableParameterfvSGI"));
+ d->ColorTableSGI = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLenum , GLenum , GLsizei , GLenum , GLenum , const GLvoid *)>(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<void (QOPENGLF_APIENTRYP)()>(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<void (QOPENGLF_APIENTRYP)(GLuint )>(context->getProcAddress("glGlobalAlphaFactoruiSUN"));
+ d->GlobalAlphaFactorusSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLushort )>(context->getProcAddress("glGlobalAlphaFactorusSUN"));
+ d->GlobalAlphaFactorubSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte )>(context->getProcAddress("glGlobalAlphaFactorubSUN"));
+ d->GlobalAlphaFactordSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLdouble )>(context->getProcAddress("glGlobalAlphaFactordSUN"));
+ d->GlobalAlphaFactorfSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat )>(context->getProcAddress("glGlobalAlphaFactorfSUN"));
+ d->GlobalAlphaFactoriSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLint )>(context->getProcAddress("glGlobalAlphaFactoriSUN"));
+ d->GlobalAlphaFactorsSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLshort )>(context->getProcAddress("glGlobalAlphaFactorsSUN"));
+ d->GlobalAlphaFactorbSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLbyte )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLint , GLsizei , GLsizei )>(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<void (QOPENGLF_APIENTRYP)(GLenum , GLsizei , const GLvoid* *)>(context->getProcAddress("glReplacementCodePointerSUN"));
+ d->ReplacementCodeubvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *)>(context->getProcAddress("glReplacementCodeubvSUN"));
+ d->ReplacementCodeusvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLushort *)>(context->getProcAddress("glReplacementCodeusvSUN"));
+ d->ReplacementCodeuivSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *)>(context->getProcAddress("glReplacementCodeuivSUN"));
+ d->ReplacementCodeubSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte )>(context->getProcAddress("glReplacementCodeubSUN"));
+ d->ReplacementCodeusSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLushort )>(context->getProcAddress("glReplacementCodeusSUN"));
+ d->ReplacementCodeuiSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint )>(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<void (QOPENGLF_APIENTRYP)(const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"));
+ d->ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"));
+ d->ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"));
+ d->ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"));
+ d->ReplacementCodeuiTexCoord2fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glReplacementCodeuiTexCoord2fVertex3fvSUN"));
+ d->ReplacementCodeuiTexCoord2fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glReplacementCodeuiTexCoord2fVertex3fSUN"));
+ d->ReplacementCodeuiColor4fNormal3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"));
+ d->ReplacementCodeuiColor4fNormal3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fSUN"));
+ d->ReplacementCodeuiNormal3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glReplacementCodeuiNormal3fVertex3fvSUN"));
+ d->ReplacementCodeuiNormal3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glReplacementCodeuiNormal3fVertex3fSUN"));
+ d->ReplacementCodeuiColor3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glReplacementCodeuiColor3fVertex3fvSUN"));
+ d->ReplacementCodeuiColor3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glReplacementCodeuiColor3fVertex3fSUN"));
+ d->ReplacementCodeuiColor4ubVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *, const GLubyte *, const GLfloat *)>(context->getProcAddress("glReplacementCodeuiColor4ubVertex3fvSUN"));
+ d->ReplacementCodeuiColor4ubVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLubyte , GLubyte , GLubyte , GLubyte , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glReplacementCodeuiColor4ubVertex3fSUN"));
+ d->ReplacementCodeuiVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLuint *, const GLfloat *)>(context->getProcAddress("glReplacementCodeuiVertex3fvSUN"));
+ d->ReplacementCodeuiVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLuint , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glReplacementCodeuiVertex3fSUN"));
+ d->TexCoord4fColor4fNormal3fVertex4fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glTexCoord4fColor4fNormal3fVertex4fvSUN"));
+ d->TexCoord4fColor4fNormal3fVertex4fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord4fColor4fNormal3fVertex4fSUN"));
+ d->TexCoord2fColor4fNormal3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glTexCoord2fColor4fNormal3fVertex3fvSUN"));
+ d->TexCoord2fColor4fNormal3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord2fColor4fNormal3fVertex3fSUN"));
+ d->TexCoord2fNormal3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glTexCoord2fNormal3fVertex3fvSUN"));
+ d->TexCoord2fNormal3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord2fNormal3fVertex3fSUN"));
+ d->TexCoord2fColor3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glTexCoord2fColor3fVertex3fvSUN"));
+ d->TexCoord2fColor3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord2fColor3fVertex3fSUN"));
+ d->TexCoord2fColor4ubVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLubyte *, const GLfloat *)>(context->getProcAddress("glTexCoord2fColor4ubVertex3fvSUN"));
+ d->TexCoord2fColor4ubVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLubyte , GLubyte , GLubyte , GLubyte , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord2fColor4ubVertex3fSUN"));
+ d->TexCoord4fVertex4fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *)>(context->getProcAddress("glTexCoord4fVertex4fvSUN"));
+ d->TexCoord4fVertex4fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord4fVertex4fSUN"));
+ d->TexCoord2fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *)>(context->getProcAddress("glTexCoord2fVertex3fvSUN"));
+ d->TexCoord2fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glTexCoord2fVertex3fSUN"));
+ d->Color4fNormal3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *, const GLfloat *)>(context->getProcAddress("glColor4fNormal3fVertex3fvSUN"));
+ d->Color4fNormal3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glColor4fNormal3fVertex3fSUN"));
+ d->Normal3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *)>(context->getProcAddress("glNormal3fVertex3fvSUN"));
+ d->Normal3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glNormal3fVertex3fSUN"));
+ d->Color3fVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLfloat *, const GLfloat *)>(context->getProcAddress("glColor3fVertex3fvSUN"));
+ d->Color3fVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLfloat , GLfloat , GLfloat , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glColor3fVertex3fSUN"));
+ d->Color4ubVertex3fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *, const GLfloat *)>(context->getProcAddress("glColor4ubVertex3fvSUN"));
+ d->Color4ubVertex3fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte , GLubyte , GLubyte , GLubyte , GLfloat , GLfloat , GLfloat )>(context->getProcAddress("glColor4ubVertex3fSUN"));
+ d->Color4ubVertex2fvSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(const GLubyte *, const GLfloat *)>(context->getProcAddress("glColor4ubVertex2fvSUN"));
+ d->Color4ubVertex2fSUN = reinterpret_cast<void (QOPENGLF_APIENTRYP)(GLubyte , GLubyte , GLubyte , GLubyte , GLfloat , GLfloat )>(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..7d6c21e4e5
--- /dev/null
+++ b/src/openglextensions/qopenglextensions.h
@@ -0,0 +1,19469 @@
+/****************************************************************************
+**
+** 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
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_OPENGL
+
+#include <QtGui/qopengl.h>
+
+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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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/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 <QtGui/qguiapplication.h>
+#include <QtCore/qsocketnotifier.h>
+#include <QtCore/qthread.h>
+
+
+/**************************************************************************
+ Socket Notifiers
+ *************************************************************************/
+void qt_mac_socket_callback(CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef,
+ const void *, void *info)
+{
+
+ QCFSocketNotifier *cfSocketNotifier = static_cast<QCFSocketNotifier *>(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, &notifierEvent);
+ } else if (callbackType == kCFSocketWriteCallBack) {
+ if (socketInfo->writeNotifier)
+ QGuiApplication::sendEvent(socketInfo->writeNotifier, &notifierEvent);
+ }
+
+ 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 <QtCore/qabstracteventdispatcher.h>
+#include <QtCore/qhash.h>
+
+#include <CoreFoundation/CoreFoundation.h>
+
+QT_BEGIN_NAMESPACE
+
+struct MacSocketInfo {
+ MacSocketInfo() : socket(0), runloop(0), readNotifier(0), writeNotifier(0) {}
+ CFSocketRef socket;
+ CFRunLoopSourceRef runloop;
+ QObject *readNotifier;
+ QObject *writeNotifier;
+};
+typedef QHash<int, MacSocketInfo *> 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/cglconvenience/cglconvenience.mm b/src/platformsupport/cglconvenience/cglconvenience.mm
index b0ea2d2225..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);
@@ -125,13 +126,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<NSOpenGLPixelFormat *>(qcgl_createNSOpenGLPixelFormat(qcgl_surfaceFormat()));
- CGLPixelFormatObj cglFormat = static_cast<CGLPixelFormatObj>([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
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/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/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.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();
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/eglconvenience/eglconvenience.pri b/src/platformsupport/eglconvenience/eglconvenience.pri
index 3257bcb8d2..506f4ab4ea 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/qeglconvenience.cpp b/src/platformsupport/eglconvenience/qeglconvenience.cpp
index 0f40a2e34b..b711a2aebd 100644
--- a/src/platformsupport/eglconvenience/qeglconvenience.cpp
+++ b/src/platformsupport/eglconvenience/qeglconvenience.cpp
@@ -210,75 +210,106 @@ bool q_reduceConfigAttributes(QVector<EGLint> *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)
{
- EGLConfig cfg = 0;
- QVector<EGLint> configureAttributes = q_createConfigAttributesFromFormat(format);
+}
+
+QEglConfigChooser::~QEglConfigChooser()
+{
+}
+
+EGLConfig QEglConfigChooser::chooseConfig()
+{
+ QVector<EGLint> 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 = 0;
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<EGLConfig> 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 1e5cbafa61..35c225cc2f 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/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 <QtGui/QOffscreenSurface>
+#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 <EGL/egl.h>
+#include <qpa/qplatformoffscreensurface.h>
+
+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/platformsupport/eglconvenience/qeglplatformcontext.cpp b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
index 7cce8d89d5..8152f74067 100644
--- a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
+++ b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
@@ -63,9 +63,23 @@ QEGLPlatformContext::QEGLPlatformContext(const QSurfaceFormat &format, QPlatform
EGLenum eglApi)
: m_eglDisplay(display)
, m_eglApi(eglApi)
- , m_eglConfig(q_configFromGLFormat(display, format, true))
- , m_format(q_glFormatFromConfig(display, m_eglConfig))
+ , m_eglConfig(q_configFromGLFormat(display, format))
{
+ 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<QEGLPlatformContext *>(share)->m_eglContext : 0;
QVector<EGLint> contextAttrs;
diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext_p.h b/src/platformsupport/eglconvenience/qeglplatformcontext_p.h
index 76002da2df..952f5a856a 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/platformsupport/fbconvenience/qfbcursor.cpp b/src/platformsupport/fbconvenience/qfbcursor.cpp
index ac2fc8528c..fecf9f6380 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/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp
index efabf6e2a8..6427b62972 100644
--- a/src/platformsupport/fbconvenience/qfbscreen.cpp
+++ b/src/platformsupport/fbconvenience/qfbscreen.cpp
@@ -45,6 +45,7 @@
#include "qfbbackingstore_p.h"
#include <QtGui/QPainter>
+#include <qpa/qwindowsysteminterface.h>
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() const
+{
+ 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..c7106358d9 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() const;
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 <QtGui/QScreen>
+#include <qpa/qwindowsysteminterface.h>
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;
diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp
index a74516214b..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,58 +91,10 @@ 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 >= 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 +118,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<FontFile *> (usrPtr);
@@ -262,8 +138,7 @@ QFontEngine *QBasicFontDatabase::fontEngine(const QFontDef &fontDef, QUnicodeTab
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;
}
@@ -337,7 +212,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);
@@ -415,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 23f60fc611..4d6fd2ceeb 100644
--- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h
+++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h
@@ -58,14 +58,13 @@ 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);
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/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index 84eb6613a3..329268395e 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 *) };
@@ -402,7 +446,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));
@@ -481,13 +525,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;
@@ -595,8 +638,7 @@ QFontEngine *QFontconfigDatabase::fontEngine(const QFontDef &f, QUnicodeTables::
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;
}
@@ -605,7 +647,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();
@@ -625,8 +667,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 cb05ef4722..6d6dae680e 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/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/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 <QtCore/qglobal.h>
+
#ifdef Q_FONTCONFIGDATABASE
#include <QtPlatformSupport/private/qfontconfigdatabase_p.h>
typedef QFontconfigDatabase QGenericUnixFontDatabase;
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
diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
index d59bd5f116..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 <Cocoa/Cocoa.h>
#import <IOKit/graphics/IOGraphicsLib.h>
@@ -85,28 +87,12 @@ 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 *) };
-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 +174,6 @@ QCoreTextFontDatabase::~QCoreTextFontDatabase()
{
}
-static QString familyNameFromPostScriptName(QHash<QString, QString> &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<CTFontRef> 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 +188,6 @@ void QCoreTextFontDatabase::populateFontDatabase()
QString foundryName = QLatin1String("CoreText");
const int numFonts = CFArrayGetCount(fonts);
- QHash<QString, QString> psNameToFamily;
for (int i = 0; i < numFonts; ++i) {
CTFontDescriptorRef font = (CTFontDescriptorRef) CFArrayGetValueAtIndex(fonts, i);
QCFString familyName = (CFStringRef) CTFontDescriptorCopyLocalizedAttribute(font, kCTFontFamilyNameAttribute, NULL);
@@ -289,35 +253,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];
}
@@ -326,7 +269,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);
@@ -376,14 +319,142 @@ 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
+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<QString, QString> &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<CTFontRef> 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);
- if (fallbackLists.isEmpty())
+
+ static QHash<QString, QStringList> fallbackLists;
+
+#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_10_8, __IPHONE_6_0)
+ // 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<QCoreTextFontDatabase*>(this)->populateFontDatabase();
+
+ QCFType<CTFontRef> font = CTFontCreateWithName(QCFString(familyNameToPsName[family]), 12.0, NULL);
+ if (font) {
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+ NSArray *languages = [defaults stringArrayForKey: @"AppleLanguages"];
+
+ QCFType<CFArrayRef> 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);
+ }
+#else
+ Q_UNUSED(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<QCoreTextFontDatabase*>(this)->populateFontDatabase();
- return fallbackLists[styleHint];
+
+ 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));
+ }
+
+ if (QCoreTextFontEngine::supportsColorGlyphs())
+ fallbackList.append(QLatin1String("Apple Color Emoji"));
+
+ 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;
+ }
+
+ 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 dcec738598..5b9b8e2329 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
@@ -64,7 +64,8 @@ public:
private:
mutable QString defaultFontName;
- QHash<QFont::StyleHint, QStringList> fallbackLists;
+ mutable QHash<QString, QString> psNameToFamily;
+ mutable QHash<QString, QString> familyNameToPsName;
};
QT_END_NAMESPACE
diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
index 5c46907bc5..3e553acd0a 100644
--- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
+++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
@@ -46,8 +46,6 @@
#include <private/qimage_p.h>
-#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);
@@ -158,7 +156,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 +455,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 +465,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 +476,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);
@@ -517,7 +528,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<QRgb> colors(256);
@@ -548,6 +567,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;
@@ -609,12 +636,15 @@ 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;
+ 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
-
-#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 dc73d38522..a9b1960491 100644
--- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h
+++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h
@@ -52,10 +52,6 @@
#include <CoreGraphics/CoreGraphics.h>
#endif
-#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;
@@ -98,12 +94,14 @@ 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 QImage bitmapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
virtual qreal minRightBearing() const;
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; }
@@ -142,8 +140,4 @@ 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/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp
index e885ecc105..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,9 +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;
int redSize = 0;
int greenSize = 0;
int blueSize = 0;
@@ -245,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<int> qglx_buildSpec(const QSurfaceFormat &format, int drawableBit = GLX_WINDOW_BIT);
QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *reduced);
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 <QTimer>
#include <QDataStream>
-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 <QHash>
#include <QSocketNotifier>
-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 <QObject>
#include <QString>
-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 <QHash>
#include <QSocketNotifier>
-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 <QString>
#include <QThread>
-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 7e838c9134..be7dbfba14 100644
--- a/src/platformsupport/input/evdevtouch/qevdevtouch_p.h
+++ b/src/platformsupport/input/evdevtouch/qevdevtouch_p.h
@@ -48,8 +48,6 @@
#include <QThread>
#include <qpa/qwindowsysteminterface.h>
-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/jniconvenience/jniconvenience.pri b/src/platformsupport/jniconvenience/jniconvenience.pri
new file mode 100644
index 0000000000..ca7c5b1e96
--- /dev/null
+++ b/src/platformsupport/jniconvenience/jniconvenience.pri
@@ -0,0 +1,9 @@
+android:!android-no-sdk {
+ 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 <qpa/qplatformnativeinterface.h>
+#include <qguiapplication.h>
+
+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<jstring> qt_toJString(const QString &string)
+{
+ QAttachedJNIEnv env;
+ return QJNILocalRef<jstring>(env->NewString(reinterpret_cast<const jchar*>(string.constData()),
+ string.length()));
+}
+
+
+static JavaVM *g_javaVM = 0;
+
+static JavaVM *getJavaVM()
+{
+ if (!g_javaVM){
+ QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
+ g_javaVM = static_cast<JavaVM*>(nativeInterface->nativeResourceForIntegration("JavaVM"));
+ }
+ return g_javaVM;
+}
+
+QThreadStorage<int> 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 <jni.h>
+#include <qglobal.h>
+#include <QString>
+#include <QThreadStorage>
+
+QT_BEGIN_NAMESPACE
+
+template <typename T>
+class QJNILocalRef;
+
+QString qt_convertJString(jstring string);
+QJNILocalRef<jstring> 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<int> m_refCount;
+};
+
+
+template <typename T>
+class QJNILocalRef
+{
+public:
+ inline QJNILocalRef() : m_obj(0) { }
+ inline explicit QJNILocalRef(T o) : m_obj(o) { }
+ inline QJNILocalRef(const QJNILocalRef<T> &other) : m_obj(other.m_obj)
+ {
+ if (other.m_obj)
+ m_obj = static_cast<T>(m_env->NewLocalRef(other.m_obj));
+ }
+
+ template <typename X>
+ inline QJNILocalRef(const QJNILocalRef<X> &other) : m_obj(other.m_obj)
+ {
+ if (other.m_obj)
+ m_obj = static_cast<T>(m_env->NewLocalRef(other.m_obj));
+ }
+
+ inline ~QJNILocalRef() { release(); }
+
+ inline QJNILocalRef<T> &operator=(const QJNILocalRef<T> &other)
+ {
+ release();
+ m_obj = other.m_obj; // for type checking
+ if (other.m_obj)
+ m_obj = static_cast<T>(m_env->NewLocalRef(other.m_obj));
+ return *this;
+ }
+
+ template <typename X>
+ inline QJNILocalRef<T> &operator=(const QJNILocalRef<X> &other)
+ {
+ release();
+ m_obj = other.m_obj; // for type checking
+ if (other.m_obj)
+ m_obj = static_cast<T>(m_env->NewLocalRef(other.m_obj));
+ return *this;
+ }
+
+ inline QJNILocalRef<T> &operator=(T o)
+ {
+ release();
+ m_obj = o;
+ return *this;
+ }
+
+ template <typename X>
+ inline QJNILocalRef<T> &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 <class X> friend class QJNILocalRef;
+};
+
+template <class T, class X>
+bool operator==(const QJNILocalRef<T> &ptr1, const QJNILocalRef<X> &ptr2)
+{
+ return ptr1.m_obj == ptr2.m_obj;
+}
+template <class T, class X>
+bool operator!=(const QJNILocalRef<T> &ptr1, const QJNILocalRef<X> &ptr2)
+{
+ return ptr1.m_obj != ptr2.m_obj;
+}
+
+template <class T, class X>
+bool operator==(const QJNILocalRef<T> &ptr1, X ptr2)
+{
+ return ptr1.m_obj == ptr2;
+}
+template <class T, class X>
+bool operator==(T ptr1, const QJNILocalRef<X> &ptr2)
+{
+ return ptr1 == ptr2.m_obj;
+}
+template <class T, class X>
+bool operator!=(const QJNILocalRef<T> &ptr1, X ptr2)
+{
+ return !(ptr1 == ptr2);
+}
+template <class T, class X>
+bool operator!=(const T *ptr1, const QJNILocalRef<X> &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 <qhash.h>
+
+QT_BEGIN_NAMESPACE
+
+static QHash<QString, jclass> g_cachedClasses;
+
+static jclass getCachedClass(JNIEnv *env, const char *className)
+{
+ jclass clazz = 0;
+ QString key = QLatin1String(className);
+ QHash<QString, jclass>::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<jclass>(env->NewGlobalRef(c));
+ g_cachedClasses.insert(key, clazz);
+ } else {
+ clazz = it.value();
+ }
+ return clazz;
+}
+
+static QHash<QString, jmethodID> 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<QString, jmethodID>::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<QString, jfieldID> 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<QString, jfieldID>::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, "<init>", "()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, "<init>", 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<jclass>(env->NewGlobalRef(clazz));
+ if (m_jclass) {
+ // get default constructor
+ jmethodID constructorId = getCachedMethodID(env, m_jclass, "<init>", "()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<jclass>(env->NewGlobalRef(clazz));
+ if (m_jclass) {
+ jmethodID constructorId = getCachedMethodID(env, m_jclass, "<init>", 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<jclass>(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<void>(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<jboolean>(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<jbyte>(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<jchar>(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<jshort>(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<jint>(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<jlong>(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<jfloat>(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<jdouble>(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<jobject> QJNIObject::callObjectMethod<jobject>(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<jobject>(res);
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::callObjectMethod<jstring>(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<jstring>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jstring>(res);
+}
+
+template <>
+QJNILocalRef<jobjectArray> QJNIObject::callObjectMethod<jobjectArray>(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<jobjectArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jobjectArray>(res);
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::callObjectMethod<jbooleanArray>(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<jbooleanArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jbooleanArray>(res);
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::callObjectMethod<jbyteArray>(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<jbyteArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jbyteArray>(res);
+}
+
+template <>
+QJNILocalRef<jcharArray> QJNIObject::callObjectMethod<jcharArray>(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<jcharArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jcharArray>(res);
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::callObjectMethod<jshortArray>(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<jshortArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jshortArray>(res);
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::callObjectMethod<jintArray>(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<jintArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jintArray>(res);
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::callObjectMethod<jlongArray>(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<jlongArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jlongArray>(res);
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::callObjectMethod<jfloatArray>(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<jfloatArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jfloatArray>(res);
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::callObjectMethod<jdoubleArray>(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<jdoubleArray>(env->CallObjectMethodV(m_jobject, id, args));
+ va_end(args);
+ }
+ return QJNILocalRef<jdoubleArray>(res);
+}
+
+template <>
+void QJNIObject::callMethod<void>(const char *methodName)
+{
+ callMethod<void>(methodName, "()V");
+}
+
+template <>
+jboolean QJNIObject::callMethod<jboolean>(const char *methodName)
+{
+ return callMethod<jboolean>(methodName, "()Z");
+}
+
+template <>
+jbyte QJNIObject::callMethod<jbyte>(const char *methodName)
+{
+ return callMethod<jbyte>(methodName, "()B");
+}
+
+template <>
+jchar QJNIObject::callMethod<jchar>(const char *methodName)
+{
+ return callMethod<jchar>(methodName, "()C");
+}
+
+template <>
+jshort QJNIObject::callMethod<jshort>(const char *methodName)
+{
+ return callMethod<jshort>(methodName, "()S");
+}
+
+template <>
+jint QJNIObject::callMethod<jint>(const char *methodName)
+{
+ return callMethod<jint>(methodName, "()I");
+}
+
+template <>
+jlong QJNIObject::callMethod<jlong>(const char *methodName)
+{
+ return callMethod<jlong>(methodName, "()J");
+}
+
+template <>
+jfloat QJNIObject::callMethod<jfloat>(const char *methodName)
+{
+ return callMethod<jfloat>(methodName, "()F");
+}
+
+template <>
+jdouble QJNIObject::callMethod<jdouble>(const char *methodName)
+{
+ return callMethod<jdouble>(methodName, "()D");
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::callObjectMethod<jstring>(const char *methodName)
+{
+ return callObjectMethod<jstring>(methodName, "()Ljava/lang/String;");
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::callObjectMethod<jbooleanArray>(const char *methodName)
+{
+ return callObjectMethod<jbooleanArray>(methodName, "()[Z");
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::callObjectMethod<jbyteArray>(const char *methodName)
+{
+ return callObjectMethod<jbyteArray>(methodName, "()[B");
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::callObjectMethod<jshortArray>(const char *methodName)
+{
+ return callObjectMethod<jshortArray>(methodName, "()[S");
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::callObjectMethod<jintArray>(const char *methodName)
+{
+ return callObjectMethod<jintArray>(methodName, "()[I");
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::callObjectMethod<jlongArray>(const char *methodName)
+{
+ return callObjectMethod<jlongArray>(methodName, "()[J");
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::callObjectMethod<jfloatArray>(const char *methodName)
+{
+ return callObjectMethod<jfloatArray>(methodName, "()[F");
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::callObjectMethod<jdoubleArray>(const char *methodName)
+{
+ return callObjectMethod<jdoubleArray>(methodName, "()[D");
+}
+
+template <>
+void QJNIObject::callStaticMethod<void>(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<void>(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<jboolean>(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<jboolean>(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<jbyte>(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<jbyte>(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<jchar>(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<jchar>(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<jshort>(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<jshort>(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<jint>(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<jint>(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<jlong>(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<jlong>(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<jfloat>(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<jfloat>(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<jdouble>(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<jdouble>(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<jobject> QJNIObject::callStaticObjectMethod<jobject>(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<jobject>(res);
+}
+
+template <>
+QJNILocalRef<jobject> QJNIObject::callStaticObjectMethod<jobject>(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<jobject>(res);
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::callStaticObjectMethod<jstring>(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<jstring>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jstring>(res);
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::callStaticObjectMethod<jstring>(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<jstring>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jstring>(res);
+}
+
+template <>
+QJNILocalRef<jobjectArray> QJNIObject::callStaticObjectMethod<jobjectArray>(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<jobjectArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jobjectArray>(res);
+}
+
+template <>
+QJNILocalRef<jobjectArray> QJNIObject::callStaticObjectMethod<jobjectArray>(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<jobjectArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jobjectArray>(res);
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::callStaticObjectMethod<jbooleanArray>(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<jbooleanArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jbooleanArray>(res);
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::callStaticObjectMethod<jbooleanArray>(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<jbooleanArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jbooleanArray>(res);
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::callStaticObjectMethod<jbyteArray>(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<jbyteArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jbyteArray>(res);
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::callStaticObjectMethod<jbyteArray>(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<jbyteArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jbyteArray>(res);
+}
+
+template <>
+QJNILocalRef<jcharArray> QJNIObject::callStaticObjectMethod<jcharArray>(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<jcharArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jcharArray>(res);
+}
+
+template <>
+QJNILocalRef<jcharArray> QJNIObject::callStaticObjectMethod<jcharArray>(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<jcharArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jcharArray>(res);
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::callStaticObjectMethod<jshortArray>(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<jshortArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jshortArray>(res);
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::callStaticObjectMethod<jshortArray>(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<jshortArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jshortArray>(res);
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::callStaticObjectMethod<jintArray>(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<jintArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jintArray>(res);
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::callStaticObjectMethod<jintArray>(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<jintArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jintArray>(res);
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::callStaticObjectMethod<jlongArray>(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<jlongArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jlongArray>(res);
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::callStaticObjectMethod<jlongArray>(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<jlongArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jlongArray>(res);
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::callStaticObjectMethod<jfloatArray>(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<jfloatArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jfloatArray>(res);
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::callStaticObjectMethod<jfloatArray>(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<jfloatArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jfloatArray>(res);
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::callStaticObjectMethod<jdoubleArray>(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<jdoubleArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+ }
+
+ return QJNILocalRef<jdoubleArray>(res);
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::callStaticObjectMethod<jdoubleArray>(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<jdoubleArray>(env->CallStaticObjectMethodV(clazz, id, args));
+ va_end(args);
+ }
+
+ return QJNILocalRef<jdoubleArray>(res);
+}
+
+template <>
+void QJNIObject::callStaticMethod<void>(const char *className, const char *methodName)
+{
+ callStaticMethod<void>(className, methodName, "()V");
+}
+
+template <>
+void QJNIObject::callStaticMethod<void>(jclass clazz, const char *methodName)
+{
+ callStaticMethod<void>(clazz, methodName, "()V");
+}
+
+template <>
+jboolean QJNIObject::callStaticMethod<jboolean>(const char *className, const char *methodName)
+{
+ return callStaticMethod<jboolean>(className, methodName, "()Z");
+}
+
+template <>
+jboolean QJNIObject::callStaticMethod<jboolean>(jclass clazz, const char *methodName)
+{
+ return callStaticMethod<jboolean>(clazz, methodName, "()Z");
+}
+
+template <>
+jbyte QJNIObject::callStaticMethod<jbyte>(const char *className, const char *methodName)
+{
+ return callStaticMethod<jbyte>(className, methodName, "()B");
+}
+
+template <>
+jbyte QJNIObject::callStaticMethod<jbyte>(jclass clazz, const char *methodName)
+{
+ return callStaticMethod<jbyte>(clazz, methodName, "()B");
+}
+
+template <>
+jchar QJNIObject::callStaticMethod<jchar>(const char *className, const char *methodName)
+{
+ return callStaticMethod<jchar>(className, methodName, "()C");
+}
+
+template <>
+jchar QJNIObject::callStaticMethod<jchar>(jclass clazz, const char *methodName)
+{
+ return callStaticMethod<jchar>(clazz, methodName, "()C");
+}
+
+template <>
+jshort QJNIObject::callStaticMethod<jshort>(const char *className, const char *methodName)
+{
+ return callStaticMethod<jshort>(className, methodName, "()S");
+}
+
+template <>
+jshort QJNIObject::callStaticMethod<jshort>(jclass clazz, const char *methodName)
+{
+ return callStaticMethod<jshort>(clazz, methodName, "()S");
+}
+
+template <>
+jint QJNIObject::callStaticMethod<jint>(const char *className, const char *methodName)
+{
+ return callStaticMethod<jint>(className, methodName, "()I");
+}
+
+template <>
+jint QJNIObject::callStaticMethod<jint>(jclass clazz, const char *methodName)
+{
+ return callStaticMethod<jint>(clazz, methodName, "()I");
+}
+
+template <>
+jlong QJNIObject::callStaticMethod<jlong>(const char *className, const char *methodName)
+{
+ return callStaticMethod<jlong>(className, methodName, "()J");
+}
+
+template <>
+jlong QJNIObject::callStaticMethod<jlong>(jclass clazz, const char *methodName)
+{
+ return callStaticMethod<jlong>(clazz, methodName, "()J");
+}
+
+template <>
+jfloat QJNIObject::callStaticMethod<jfloat>(const char *className, const char *methodName)
+{
+ return callStaticMethod<jfloat>(className, methodName, "()F");
+}
+
+template <>
+jfloat QJNIObject::callStaticMethod<jfloat>(jclass clazz, const char *methodName)
+{
+ return callStaticMethod<jfloat>(clazz, methodName, "()F");
+}
+
+template <>
+jdouble QJNIObject::callStaticMethod<jdouble>(const char *className, const char *methodName)
+{
+ return callStaticMethod<jdouble>(className, methodName, "()D");
+}
+
+template <>
+jdouble QJNIObject::callStaticMethod<jdouble>(jclass clazz, const char *methodName)
+{
+ return callStaticMethod<jdouble>(clazz, methodName, "()D");
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::callStaticObjectMethod<jstring>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jstring>(className, methodName, "()Ljava/lang/String;");
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::callStaticObjectMethod<jstring>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jstring>(clazz, methodName, "()Ljava/lang/String;");
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::callStaticObjectMethod<jbooleanArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jbooleanArray>(className, methodName, "()[Z");
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::callStaticObjectMethod<jbooleanArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jbooleanArray>(clazz, methodName, "()[Z");
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::callStaticObjectMethod<jbyteArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jbyteArray>(className, methodName, "()[B");
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::callStaticObjectMethod<jbyteArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jbyteArray>(clazz, methodName, "()[B");
+}
+
+template <>
+QJNILocalRef<jcharArray> QJNIObject::callStaticObjectMethod<jcharArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jcharArray>(className, methodName, "()[C");
+}
+
+template <>
+QJNILocalRef<jcharArray> QJNIObject::callStaticObjectMethod<jcharArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jcharArray>(clazz, methodName, "()[C");
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::callStaticObjectMethod<jshortArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jshortArray>(className, methodName, "()[S");
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::callStaticObjectMethod<jshortArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jshortArray>(clazz, methodName, "()[S");
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::callStaticObjectMethod<jintArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jintArray>(className, methodName, "()[I");
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::callStaticObjectMethod<jintArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jintArray>(clazz, methodName, "()[I");
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::callStaticObjectMethod<jlongArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jlongArray>(className, methodName, "()[J");
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::callStaticObjectMethod<jlongArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jlongArray>(clazz, methodName, "()[J");
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::callStaticObjectMethod<jfloatArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jfloatArray>(className, methodName, "()[F");
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::callStaticObjectMethod<jfloatArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jfloatArray>(clazz, methodName, "()[F");
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::callStaticObjectMethod<jdoubleArray>(const char *className,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jdoubleArray>(className, methodName, "()[D");
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::callStaticObjectMethod<jdoubleArray>(jclass clazz,
+ const char *methodName)
+{
+ return callStaticObjectMethod<jdoubleArray>(clazz, methodName, "()[D");
+}
+
+template <>
+jboolean QJNIObject::getField<jboolean>(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<jbyte>(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<jchar>(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<jshort>(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<jint>(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<jlong>(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<jfloat>(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<jdouble>(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<jobject> QJNIObject::getObjectField<jobject>(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<jobject>(res);
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::getObjectField<jbooleanArray>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jbooleanArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[Z");
+ if (id)
+ res = static_cast<jbooleanArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jbooleanArray>(res);
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::getObjectField<jbyteArray>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jbyteArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[B");
+ if (id)
+ res = static_cast<jbyteArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jbyteArray>(res);
+}
+
+template <>
+QJNILocalRef<jcharArray> QJNIObject::getObjectField<jcharArray>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jcharArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[C");
+ if (id)
+ res = static_cast<jcharArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jcharArray>(res);
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::getObjectField<jshortArray>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jshortArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[S");
+ if (id)
+ res = static_cast<jshortArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jshortArray>(res);
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::getObjectField<jintArray>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jintArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[I");
+ if (id)
+ res = static_cast<jintArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jintArray>(res);
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::getObjectField<jlongArray>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jlongArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[J");
+ if (id)
+ res = static_cast<jlongArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jlongArray>(res);
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::getObjectField<jfloatArray>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jfloatArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[F");
+ if (id)
+ res = static_cast<jfloatArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jfloatArray>(res);
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::getObjectField<jdoubleArray>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jdoubleArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "[D");
+ if (id)
+ res = static_cast<jdoubleArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jdoubleArray>(res);
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::getObjectField<jstring>(const char *fieldName)
+{
+ QAttachedJNIEnv env;
+ jstring res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, "Ljava/lang/String;");
+ if (id)
+ res = static_cast<jstring>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jstring>(res);
+}
+
+template <>
+QJNILocalRef<jobjectArray> QJNIObject::getObjectField<jobjectArray>(const char *fieldName,
+ const char *sig)
+{
+ QAttachedJNIEnv env;
+ jobjectArray res = 0;
+ jfieldID id = getCachedFieldID(env, m_jclass, fieldName, sig);
+ if (id)
+ res = static_cast<jobjectArray>(env->GetObjectField(m_jobject, id));
+
+ return QJNILocalRef<jobjectArray>(res);
+}
+
+template <>
+void QJNIObject::setField<jboolean>(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<jbyte>(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<jchar>(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<jshort>(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<jint>(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<jlong>(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<jfloat>(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<jdouble>(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<jbooleanArray>(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<jbyteArray>(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<jcharArray>(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<jshortArray>(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<jintArray>(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<jlongArray>(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<jfloatArray>(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<jdoubleArray>(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<jstring>(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<jobject>(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<jobjectArray>(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<jboolean>(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<jboolean>(const char *className, const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jboolean res = 0;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticField<jboolean>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+jbyte QJNIObject::getStaticField<jbyte>(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<jbyte>(const char *className, const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jbyte res = 0;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticField<jbyte>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+jchar QJNIObject::getStaticField<jchar>(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<jchar>(const char *className, const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jchar res = 0;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticField<jchar>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+jshort QJNIObject::getStaticField<jshort>(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<jshort>(const char *className, const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jshort res = 0;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticField<jshort>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+jint QJNIObject::getStaticField<jint>(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<jint>(const char *className, const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jint res = 0;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticField<jint>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+jlong QJNIObject::getStaticField<jlong>(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<jlong>(const char *className, const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jlong res = 0;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticField<jlong>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+jfloat QJNIObject::getStaticField<jfloat>(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<jfloat>(const char *className, const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jfloat res = 0.f;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticField<jfloat>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+jdouble QJNIObject::getStaticField<jdouble>(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<jdouble>(const char *className, const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jdouble res = 0.;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticField<jdouble>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jobject> QJNIObject::getStaticObjectField<jobject>(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<jobject>(res);
+}
+
+template <>
+QJNILocalRef<jobject> QJNIObject::getStaticObjectField<jobject>(const char *className,
+ const char *fieldName,
+ const char *sig)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jobject> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jobject>(clazz, fieldName, sig);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::getStaticObjectField<jstring>(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<jstring>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jstring>(res);
+}
+
+template <>
+QJNILocalRef<jstring> QJNIObject::getStaticObjectField<jstring>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jstring> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jstring>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::getStaticObjectField<jbooleanArray>(jclass clazz,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jbooleanArray res = 0;
+
+ jfieldID id = getCachedFieldID(env, clazz, fieldName, "[Z", true);
+ if (id)
+ res = static_cast<jbooleanArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jbooleanArray>(res);
+}
+
+template <>
+QJNILocalRef<jbooleanArray> QJNIObject::getStaticObjectField<jbooleanArray>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jbooleanArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jbooleanArray>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::getStaticObjectField<jbyteArray>(jclass clazz,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jbyteArray res = 0;
+
+ jfieldID id = getCachedFieldID(env, clazz, fieldName, "[B", true);
+ if (id)
+ res = static_cast<jbyteArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jbyteArray>(res);
+}
+
+template <>
+QJNILocalRef<jbyteArray> QJNIObject::getStaticObjectField<jbyteArray>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jbyteArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jbyteArray>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jcharArray> QJNIObject::getStaticObjectField<jcharArray>(jclass clazz,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jcharArray res = 0;
+
+ jfieldID id = getCachedFieldID(env, clazz, fieldName, "[C", true);
+ if (id)
+ res = static_cast<jcharArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jcharArray>(res);
+}
+
+template <>
+QJNILocalRef<jcharArray> QJNIObject::getStaticObjectField<jcharArray>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jcharArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jcharArray>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::getStaticObjectField<jshortArray>(jclass clazz,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jshortArray res = 0;
+
+ jfieldID id = getCachedFieldID(env, clazz, fieldName, "[S", true);
+ if (id)
+ res = static_cast<jshortArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jshortArray>(res);
+}
+
+template <>
+QJNILocalRef<jshortArray> QJNIObject::getStaticObjectField<jshortArray>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jshortArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jshortArray>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::getStaticObjectField<jintArray>(jclass clazz,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jintArray res = 0;
+
+ jfieldID id = getCachedFieldID(env, clazz, fieldName, "[I", true);
+ if (id)
+ res = static_cast<jintArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jintArray>(res);
+}
+
+template <>
+QJNILocalRef<jintArray> QJNIObject::getStaticObjectField<jintArray>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jintArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jintArray>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::getStaticObjectField<jlongArray>(jclass clazz,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jlongArray res = 0;
+
+ jfieldID id = getCachedFieldID(env, clazz, fieldName, "[J", true);
+ if (id)
+ res = static_cast<jlongArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jlongArray>(res);
+}
+
+template <>
+QJNILocalRef<jlongArray> QJNIObject::getStaticObjectField<jlongArray>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jlongArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jlongArray>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::getStaticObjectField<jfloatArray>(jclass clazz,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jfloatArray res = 0;
+
+ jfieldID id = getCachedFieldID(env, clazz, fieldName, "[F", true);
+ if (id)
+ res = static_cast<jfloatArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jfloatArray>(res);
+}
+
+template <>
+QJNILocalRef<jfloatArray> QJNIObject::getStaticObjectField<jfloatArray>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jfloatArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jfloatArray>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::getStaticObjectField<jdoubleArray>(jclass clazz,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ jdoubleArray res = 0;
+
+ jfieldID id = getCachedFieldID(env, clazz, fieldName, "[D", true);
+ if (id)
+ res = static_cast<jdoubleArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jdoubleArray>(res);
+}
+
+template <>
+QJNILocalRef<jdoubleArray> QJNIObject::getStaticObjectField<jdoubleArray>(const char *className,
+ const char *fieldName)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jdoubleArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jdoubleArray>(clazz, fieldName);
+
+ return res;
+}
+
+template <>
+QJNILocalRef<jobjectArray> QJNIObject::getStaticObjectField<jobjectArray>(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<jobjectArray>(env->GetStaticObjectField(clazz, id));
+
+ return QJNILocalRef<jobjectArray>(res);
+}
+
+template <>
+QJNILocalRef<jobjectArray> QJNIObject::getStaticObjectField<jobjectArray>(const char *className,
+ const char *fieldName,
+ const char *sig)
+{
+ QAttachedJNIEnv env;
+
+ QJNILocalRef<jobjectArray> res;
+
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ res = getStaticObjectField<jobjectArray>(clazz, fieldName, sig);
+
+ return res;
+}
+
+template <>
+void QJNIObject::setStaticField<jboolean>(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<jboolean>(const char *className,
+ const char *fieldName,
+ jboolean value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jboolean>(clazz, fieldName, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jbyte>(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<jbyte>(const char *className,
+ const char *fieldName,
+ jbyte value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jbyte>(clazz, fieldName, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jchar>(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<jchar>(const char *className,
+ const char *fieldName,
+ jchar value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jchar>(clazz, fieldName, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jshort>(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<jshort>(const char *className,
+ const char *fieldName,
+ jshort value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jshort>(clazz, fieldName, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jint>(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<jint>(const char *className, const char *fieldName, jint value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jint>(clazz, fieldName, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jlong>(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<jlong>(const char *className,
+ const char *fieldName,
+ jlong value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jlong>(clazz, fieldName, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jfloat>(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<jfloat>(const char *className,
+ const char *fieldName,
+ jfloat value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jfloat>(clazz, fieldName, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jdouble>(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<jdouble>(const char *className,
+ const char *fieldName,
+ jdouble value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jdouble>(clazz, fieldName, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jobject>(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<jobject>(const char *className,
+ const char *fieldName,
+ const char *sig,
+ jobject value)
+{
+ QAttachedJNIEnv env;
+ jclass clazz = getCachedClass(env, className);
+ if (clazz)
+ setStaticField<jobject>(clazz, fieldName, sig, value);
+}
+
+template <>
+void QJNIObject::setStaticField<jstring>(const char *className,
+ const char *fieldName,
+ jstring value)
+{
+ setStaticField<jobject>(className, fieldName, "Ljava/lang/String;", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jstring>(jclass clazz, const char *fieldName, jstring value)
+{
+ setStaticField<jobject>(clazz, fieldName, "Ljava/lang/String;", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jbooleanArray>(const char *className,
+ const char *fieldName,
+ jbooleanArray value)
+{
+ setStaticField<jobject>(className, fieldName, "[Z", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jbooleanArray>(jclass clazz,
+ const char *fieldName,
+ jbooleanArray value)
+{
+ setStaticField<jobject>(clazz, fieldName, "[Z", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jbyteArray>(const char *className,
+ const char *fieldName,
+ jbyteArray value)
+{
+ setStaticField<jobject>(className, fieldName, "[B", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jbyteArray>(jclass clazz,
+ const char *fieldName,
+ jbyteArray value)
+{
+ setStaticField<jobject>(clazz, fieldName, "[B", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jcharArray>(const char *className,
+ const char *fieldName,
+ jcharArray value)
+{
+ setStaticField<jobject>(className, fieldName, "[C", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jcharArray>(jclass clazz,
+ const char *fieldName,
+ jcharArray value)
+{
+ setStaticField<jobject>(clazz, fieldName, "[C", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jshortArray>(const char *className,
+ const char *fieldName,
+ jshortArray value)
+{
+ setStaticField<jobject>(className, fieldName, "[S", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jshortArray>(jclass clazz,
+ const char *fieldName,
+ jshortArray value)
+{
+ setStaticField<jobject>(clazz, fieldName, "[S", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jintArray>(const char *className,
+ const char *fieldName,
+ jintArray value)
+{
+ setStaticField<jobject>(className, fieldName, "[I", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jintArray>(jclass clazz,
+ const char *fieldName,
+ jintArray value)
+{
+ setStaticField<jobject>(clazz, fieldName, "[I", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jlongArray>(const char *className,
+ const char *fieldName,
+ jlongArray value)
+{
+ setStaticField<jobject>(className, fieldName, "[J", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jlongArray>(jclass clazz,
+ const char *fieldName,
+ jlongArray value)
+{
+ setStaticField<jobject>(clazz, fieldName, "[J", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jfloatArray>(const char *className,
+ const char *fieldName,
+ jfloatArray value)
+{
+ setStaticField<jobject>(className, fieldName, "[F", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jfloatArray>(jclass clazz,
+ const char *fieldName,
+ jfloatArray value)
+{
+ setStaticField<jobject>(clazz, fieldName, "[F", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jdoubleArray>(const char *className,
+ const char *fieldName,
+ jdoubleArray value)
+{
+ setStaticField<jobject>(className, fieldName, "[D", value);
+}
+
+template <>
+void QJNIObject::setStaticField<jdoubleArray>(jclass clazz,
+ const char *fieldName,
+ jdoubleArray value)
+{
+ setStaticField<jobject>(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 <qglobal.h>
+#include <jni.h>
+
+QT_BEGIN_NAMESPACE
+
+template <typename T>
+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<jchar>("charAt", "(I)C", 0);
+ *
+ * ----
+ *
+ * jstring string = QJNIObject::callStaticMethod<jstring>("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<jint>("fieldName", 10);
+ * someObject.callMethod<void>("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 <typename T>
+ T callMethod(const char *methodName);
+ template <typename T>
+ T callMethod(const char *methodName, const char *sig, ...);
+ template <typename T>
+ QJNILocalRef<T> callObjectMethod(const char *methodName);
+ template <typename T>
+ QJNILocalRef<T> callObjectMethod(const char *methodName, const char *sig, ...);
+
+ template <typename T>
+ static T callStaticMethod(const char *className, const char *methodName);
+ template <typename T>
+ static T callStaticMethod(const char *className, const char *methodName, const char *sig, ...);
+ template <typename T>
+ static QJNILocalRef<T> callStaticObjectMethod(const char *className, const char *methodName);
+ template <typename T>
+ static QJNILocalRef<T> callStaticObjectMethod(const char *className,
+ const char *methodName,
+ const char *sig, ...);
+ template <typename T>
+ static T callStaticMethod(jclass clazz, const char *methodName);
+ template <typename T>
+ static T callStaticMethod(jclass clazz, const char *methodName, const char *sig, ...);
+ template <typename T>
+ static QJNILocalRef<T> callStaticObjectMethod(jclass clazz, const char *methodName);
+ template <typename T>
+ static QJNILocalRef<T> callStaticObjectMethod(jclass clazz,
+ const char *methodName,
+ const char *sig, ...);
+
+ template <typename T>
+ T getField(const char *fieldName);
+ template <typename T>
+ T getField(const char *fieldName, const char *sig);
+ template <typename T>
+ QJNILocalRef<T> getObjectField(const char *fieldName);
+ template <typename T>
+ QJNILocalRef<T> getObjectField(const char *fieldName, const char *sig);
+
+ template <typename T>
+ void setField(const char *fieldName, T value);
+ template <typename T>
+ void setField(const char *fieldName, const char *sig, T value);
+
+ template <typename T>
+ static QJNILocalRef<T> getStaticObjectField(const char *className, const char *fieldName);
+ template <typename T>
+ static QJNILocalRef<T> getStaticObjectField(const char *className,
+ const char *fieldName,
+ const char *sig);
+ template <typename T>
+ static T getStaticField(const char *className, const char *fieldName);
+ template <typename T>
+ static QJNILocalRef<T> getStaticObjectField(jclass clazz, const char *fieldName);
+ template <typename T>
+ static QJNILocalRef<T> getStaticObjectField(jclass clazz, const char *fieldName, const char *sig);
+ template <typename T>
+ static T getStaticField(jclass clazz, const char *fieldName);
+
+ template <typename T>
+ static void setStaticField(const char *className,
+ const char *fieldName,
+ const char *sig,
+ T value);
+ template <typename T>
+ static void setStaticField(const char *className, const char *fieldName, T value);
+ template <typename T>
+ static void setStaticField(jclass clazz, const char *fieldName, const char *sig, T value);
+ template <typename T>
+ 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/linuxaccessibility/application_p.h b/src/platformsupport/linuxaccessibility/application_p.h
index 754d98495a..e8684ab2b5 100644
--- a/src/platformsupport/linuxaccessibility/application_p.h
+++ b/src/platformsupport/linuxaccessibility/application_p.h
@@ -47,7 +47,6 @@
#include <QtDBus/QDBusConnection>
#include <QtGui/QAccessibleInterface>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
/*
@@ -82,6 +81,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..0bc3290baa 100644
--- a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h
+++ b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h
@@ -48,12 +48,11 @@
#include <QtCore/qsharedpointer.h>
#include <QtDBus/qdbusvirtualobject.h>
#include <QtGui/qaccessible.h>
-#include <QtGui/qaccessible2.h>
+#include <QtGui/private/qaccessible2_p.h>
#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 <QtCore/QObject>
#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 <QtDBus/QDBusConnection>
#include <QtDBus/QDBusVariant>
-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 <QtDBus/QDBusConnection>
#include <QtDBus/QDBusObjectPath>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
typedef QList <int> 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/platformsupport.pro b/src/platformsupport/platformsupport.pro
index 57d9b422f4..0566e9d3ec 100644
--- a/src/platformsupport/platformsupport.pro
+++ b/src/platformsupport/platformsupport.pro
@@ -2,13 +2,14 @@ TARGET = QtPlatformSupport
QT = core-private gui-private
CONFIG += static internal_module
-mac:LIBS += -lz -framework CoreFoundation -framework Carbon
+mac:LIBS += -lz
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)
@@ -21,3 +22,4 @@ include(devicediscovery/devicediscovery.pri)
include(services/services.pri)
include(themes/themes.pri)
include(linuxaccessibility/linuxaccessibility.pri)
+include(jniconvenience/jniconvenience.pri)
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 <qpa/qplatformservices.h>
#include <QtCore/QString>
-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.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
index 6e40bbfa15..6ea68397b6 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/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 <QtCore/QStringList>
#include <QtGui/QFont>
-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/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 <QtCore/qpointer.h>
-#include <QtWidgets/qaccessiblewidget.h>
+#include <QtWidgets/private/qaccessiblewidget_p.h>
#include <QtWidgets/qabstractitemview.h>
-#include <QtGui/qaccessible2.h>
+#include <QtGui/private/qaccessible2_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp
index a3fcc22fc4..cb34116f32 100644
--- a/src/plugins/accessible/widgets/itemviews.cpp
+++ b/src/plugins/accessible/widgets/itemviews.cpp
@@ -46,7 +46,7 @@
#include <qlistview.h>
#include <qtreeview.h>
#include <private/qtreewidget_p.h>
-#include <qaccessible2.h>
+#include <QtGui/private/qaccessible2_p.h>
#include <QDebug>
#ifndef QT_NO_ACCESSIBILITY
@@ -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;
}
@@ -415,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());
}
@@ -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;
}
@@ -595,6 +700,8 @@ void *QAccessibleTableCell::interface_cast(QAccessible::InterfaceType t)
{
if (t == QAccessible::TableCellInterface)
return static_cast<QAccessibleTableCellInterface*>(this);
+ if (t == QAccessible::ActionInterface)
+ return static_cast<QAccessibleActionInterface*>(this);
return 0;
}
@@ -668,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 &) const
+{
+ return QStringList();
+}
+
+
+void QAccessibleTableCell::selectCell()
+{
+ QAbstractItemView::SelectionMode selectionMode = view->selectionMode();
+ if (!m_index.isValid() || (selectionMode == QAbstractItemView::NoSelection))
+ return;
+
+ QSharedPointer<QAccessibleTableInterface> 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<QAccessibleTableInterface> 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();
@@ -856,14 +1046,11 @@ bool QAccessibleTableHeaderCell::isValid() const
QAccessibleInterface *QAccessibleTableHeaderCell::parent() const
{
- if (false) {
#ifndef QT_NO_TREEVIEW
- } else if (qobject_cast<const QTreeView*>(view)) {
+ if (qobject_cast<const QTreeView*>(view))
return new QAccessibleTree(view);
#endif
- } else {
- return new QAccessibleTable(view);
- }
+ return new QAccessibleTable(view);
}
QAccessibleInterface *QAccessibleTableHeaderCell::child(int) const
diff --git a/src/plugins/accessible/widgets/itemviews.h b/src/plugins/accessible/widgets/itemviews.h
index d58d504690..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 <QtGui/qaccessible.h>
-#include <QtGui/qaccessible2.h>
-#include <QtWidgets/qaccessiblewidget.h>
+#include <QtGui/private/qaccessible2_p.h>
+#include <QtWidgets/private/qaccessiblewidget_p.h>
#include <QtWidgets/qabstractitemview.h>
#include <QtWidgets/qheaderview.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;
};
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/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 <QtWidgets/qaccessiblewidget.h>
+#include <QtWidgets/private/qaccessiblewidget_p.h>
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 <QtGui/qaccessible2.h>
-#include <QtWidgets/qaccessiblewidget.h>
+#include <QtGui/private/qaccessible2_p.h>
+#include <QtWidgets/private/qaccessiblewidget_p.h>
#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 <QtWidgets/qaccessiblewidget.h>
-#include <QtGui/qaccessible2.h>
+#include <QtWidgets/private/qaccessiblewidget_p.h>
+#include <QtGui/private/qaccessible2_p.h>
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 <QtCore/qcoreapplication.h>
-#include <QtGui/qaccessible2.h>
-#include <QtWidgets/qaccessiblewidget.h>
+#include <QtGui/private/qaccessible2_p.h>
+#include <QtWidgets/private/qaccessiblewidget_p.h>
QT_BEGIN_NAMESPACE
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/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/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/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 \
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 <QDBusObjectPath> 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 <QDBusObjectPath> 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 <QString,QVariant>);
void propertiesChanged( const QString &, QMap<QString,QVariant>);
@@ -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<QString,QVariant>);
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 <QDBusObjectPath> getAccessPoints();
QDBusInterface *connectionInterface() const;
@@ -327,7 +327,7 @@ public:
quint32 wirelessCapabilities() const;
bool setConnections();
bool isValid();
-
+
Q_SIGNALS:
void propertiesChanged( const QString &, QMap<QString,QVariant>);
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 <QDBusObjectPath> 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<QDBusObjectPath>);
void propertiesChanged( const QString &, QMap<QString,QVariant>);
@@ -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/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 <qobject.h>
//#include <Qt>
-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/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/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/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" ]
}
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/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/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 <bogdan@kde.org>
+** 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<const jchar *>(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<jstring>(env.jniEnv->CallStaticObjectMethod(applicationClass(),
+ m_getClipboardTextMethodID));
+ const jchar *jstr = env.jniEnv->GetStringChars(text, 0);
+ QString str(reinterpret_cast<const QChar *>(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 <bogdan@kde.org>
+** 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 <jni.h>
+#include <QString>
+
+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..da6156a330
--- /dev/null
+++ b/src/plugins/platforms/android/src/androidjniinput.cpp
@@ -0,0 +1,497 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+** 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 "qandroidplatformintegration.h"
+
+#include <qpa/qwindowsysteminterface.h>
+#include <QTouchEvent>
+#include <QPointer>
+
+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<QWindowSystemInterface::TouchPoint> m_touchPoints;
+
+ static QPointer<QWindow> 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)
+ {
+ if (m_touchPoints.isEmpty())
+ return;
+
+ 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;
+ }
+
+ 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)
+ {
+ // 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 <bogdan@kde.org>
+** 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 <jni.h>
+
+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..f8f077908c
--- /dev/null
+++ b/src/plugins/platforms/android/src/androidjnimain.cpp
@@ -0,0 +1,845 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+** 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 <dlfcn.h>
+#include <pthread.h>
+#include <qcoreapplication.h>
+#include <qimage.h>
+#include <qpoint.h>
+#include <qplugin.h>
+#include <qsemaphore.h>
+#include <qmutex.h>
+#include <qdebug.h>
+#include <qglobal.h>
+#include <qobjectdefs.h>
+#include <stdlib.h>
+
+#include "androidjnimain.h"
+#include "androidjniinput.h"
+#include "androidjniclipboard.h"
+#include "androidjnimenu.h"
+#include "qandroidplatformintegration.h"
+#include <QtWidgets/QApplication>
+
+#include <qabstracteventdispatcher.h>
+
+#include <android/bitmap.h>
+#include <android/asset_manager_jni.h>
+#include "qandroidassetsfileenginehandler.h"
+#include <android/api-level.h>
+
+#include <qpa/qwindowsysteminterface.h>
+
+#ifdef ANDROID_PLUGIN_OPENGL
+# include "qandroidopenglplatformwindow.h"
+#endif
+
+#if __ANDROID_API__ > 8
+# include <android/native_window_jni.h>
+#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<QByteArray> 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<unsigned char *>(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<const unsigned char *>(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();
+ }
+
+ QAndroidPlatformIntegration *androidPlatformIntegration()
+ {
+ QMutexLocker locker(&m_surfaceMutex);
+ return m_androidPlatformIntegration;
+ }
+
+ 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<jclass>(env->CallObjectMethod(m_classLoaderObject,
+ m_loadClassMethodID,
+ env->NewString(reinterpret_cast<const jchar *>(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<uchar *>(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<char const **>(malloc(m_applicationParams.length() * sizeof(char *)));
+ for (int i = 0; i < m_applicationParams.size(); i++)
+ params[i] = static_cast<const char *>(m_applicationParams[i].constData());
+
+ int ret = m_main(m_applicationParams.length(), const_cast<char **>(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<FakeSurface *>(env->GetIntField(jSurface, m_surfaceFieldID));
+ return static_cast<EGLNativeWindowType>(static_cast<FakeNativeWindow*>(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<QAndroidPlatformScreen *>(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<jclass>(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<jclass>(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<jclass>(env->NewGlobalRef(clazz));
+ GET_AND_CHECK_METHOD(m_bitmapDrawableConstructorMethodID,
+ m_bitmapDrawableClass,
+ "<init>",
+ "(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..618bd87cdb
--- /dev/null
+++ b/src/plugins/platforms/android/src/androidjnimain.h
@@ -0,0 +1,121 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+** 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 <android/log.h>
+
+#ifdef ANDROID_PLUGIN_OPENGL
+# include <EGL/eglplatform.h>
+#endif
+
+#include <QtCore/qsize.h>
+
+#include <jni.h>
+#include <android/asset_manager.h>
+
+class QImage;
+class QRect;
+class QPoint;
+class QThread;
+class QAndroidPlatformIntegration;
+class QWidget;
+class QString;
+class QWindow;
+
+namespace QtAndroid
+{
+ QAndroidPlatformIntegration *androidPlatformIntegration();
+ 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 <bogdan@kde.org>
+** 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 <qmutex.h>
+#include <qset.h>
+#include <qqueue.h>
+#include <android/log.h>
+#include "qandroidplatformmenubar.h"
+#include "qandroidplatformmenu.h"
+#include <qandroidplatformmenuitem.h>
+
+using namespace QtAndroid;
+
+namespace QtAndroidMenu
+{
+ static QQueue<QAndroidPlatformMenu *> pendingContextMenus;
+ static QAndroidPlatformMenu *visibleMenu = 0;
+ static QMutex visibleMenuMutex(QMutex::Recursive);
+
+ static QSet<QAndroidPlatformMenuBar *> 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<const jchar *>(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<QAndroidPlatformMenu *>(menus.front()));
+ } else {
+ foreach (QAndroidPlatformMenu *item, menus) {
+ jstring jtext = env->NewString(reinterpret_cast<const jchar *>(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<QAndroidPlatformMenuItem *>(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<QAndroidPlatformMenu *>(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<const jchar*>(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<QAndroidPlatformMenuItem *>(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 <bogdan@kde.org>
+** 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 <jni.h>
+
+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 <bogdan@kde.org>
+** 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 <qpa/qplatformintegrationplugin.h>
+#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 &paramList);
+};
+
+
+QPlatformIntegration *QAndroidPlatformIntegrationPlugin::create(const QString &key, const QStringList &paramList)
+{
+ Q_UNUSED(paramList);
+ if (key.toLower() == "android")
+ return new QAndroidPlatformIntegration(paramList);
+ return 0;
+}
+
+QT_END_NAMESPACE
+#include "androidplatformplugin.moc"
+
diff --git a/mkspecs/common/ios/qplatformdefs.h b/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.cpp
index cdefd3dba0..aa8ee57341 100644
--- a/mkspecs/common/ios/qplatformdefs.h
+++ b/src/plugins/platforms/android/src/opengl/qandroidopenglcontext.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 qmake spec of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,59 +39,40 @@
**
****************************************************************************/
-#ifndef QPLATFORMDEFS_H
-#define QPLATFORMDEFS_H
-
-// Get Qt defines/settings
-
-#include "qglobal.h"
-
-// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
-
-#include <unistd.h>
-
-
-// We are hot - unistd.h should have turned on the specific APIs we requested
-
-
-#include <pthread.h>
-#include <dirent.h>
-#include <fcntl.h>
-#include <grp.h>
-#include <pwd.h>
-#include <signal.h>
-#define QT_NO_LIBRARY_UNLOAD
-
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <sys/ipc.h>
-#include <sys/time.h>
-#include <sys/shm.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <netinet/in.h>
-#ifndef QT_NO_IPV6IFNAME
-#include <net/if.h>
-#endif
-
-#include "../../common/posix/qplatformdefs.h"
-
-#undef QT_OPEN_LARGEFILE
-#undef QT_SOCKLEN_T
-#undef QT_SIGNAL_IGNORE
-
-#define QT_OPEN_LARGEFILE 0
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
-#define QT_SOCKLEN_T socklen_t
-#else
-#define QT_SOCKLEN_T int
-#endif
-
-#define QT_SIGNAL_IGNORE (void (*)(int))1
-
-#define QT_SNPRINTF ::snprintf
-#define QT_VSNPRINTF ::vsnprintf
-
-#endif // QPLATFORMDEFS_H
+#include "qandroidopenglcontext.h"
+#include "qandroidopenglplatformwindow.h"
+#include "qandroidplatformintegration.h"
+
+#include <QtCore/qdebug.h>
+#include <qpa/qwindowsysteminterface.h>
+
+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 <QtCore/qreadwritelock.h>
+#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 <qpa/qwindowsysteminterface.h>
+
+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 <QtCore/qmutex.h>
+
+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 <android/native_window.h>
+#include <jni.h>
+
+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 <bogdan@kde.org>
+** 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 <QCoreApplication>
+
+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 <bogdan@kde.org>
+** 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 <QtCore/private/qabstractfileengine_p.h>
+#include <android/asset_manager.h>
+
+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 <bogdan@kde.org>
+** 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 <android/log.h>
+
+#include "qandroidinputcontext.h"
+#include "androidjnimain.h"
+#include "androidjniinput.h"
+#include <QDebug>
+#include <qevent.h>
+#include <qguiapplication.h>
+#include <qsharedpointer.h>
+#include <qthread.h>
+#include <qinputmethod.h>
+#include <qwindow.h>
+
+#include <QTextCharFormat>
+
+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<const QChar *>(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<const jchar *>(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<const jchar *>(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<const jchar *>(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<const jchar *>(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<const QChar *>(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<jclass>(env->NewGlobalRef(clazz));
+ m_classConstructorMethodID = env->GetMethodID(m_extractedTextClass, "<init>", "()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 *>("QInputMethodEvent*");
+ qRegisterMetaType<QInputMethodQueryEvent *>("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<QInputMethodQueryEvent> 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<QInputMethodQueryEvent> 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<QInputMethodQueryEvent> 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<QInputMethodQueryEvent> 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<QInputMethodQueryEvent> 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<QInputMethodQueryEvent> 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<QInputMethodQueryEvent> query = focusObjectInputMethodQuery();
+ if (query.isNull())
+ return QString();
+
+ return query->value(Qt::ImCurrentSelection).toString();
+}
+
+QString QAndroidInputContext::getTextAfterCursor(jint length, jint /*flags*/)
+{
+ QSharedPointer<QInputMethodQueryEvent> 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<QInputMethodQueryEvent> 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<QInputMethodEvent::Attribute> 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<QInputMethodQueryEvent> 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<QInputMethodEvent::Attribute> 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<QInputMethodQueryEvent> QAndroidInputContext::focusObjectInputMethodQuery(Qt::InputMethodQueries queries)
+{
+#warning TODO make qGuiApp->focusObject() thread safe !!!
+ QObject *focusObject = qGuiApp->focusObject();
+ if (!focusObject)
+ return QSharedPointer<QInputMethodQueryEvent>();
+
+ QSharedPointer<QInputMethodQueryEvent> ret = QSharedPointer<QInputMethodQueryEvent>(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 <bogdan@kde.org>
+** 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 <qpa/qplatforminputcontext.h>
+#include <jni.h>
+#include <qevent.h>
+
+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<QInputMethodQueryEvent> 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 <bogdan@kde.org>
+** 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 <QMimeData>
+
+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 <bogdan@kde.org>
+** 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 <qpa/qplatformclipboard.h>
+
+#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 <bogdan@kde.org>
+** 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 <QDir>
+
+#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 <bogdan@kde.org>
+** 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 <QtPlatformSupport/private/qbasicfontdatabase_p.h>
+
+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..cbd0f26835
--- /dev/null
+++ b/src/plugins/platforms/android/src/qandroidplatformintegration.cpp
@@ -0,0 +1,285 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+** 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 <QtGui/private/qpixmap_raster_p.h>
+#include <qpa/qwindowsysteminterface.h>
+#include <QThread>
+#include <qpa/qplatformwindow.h>
+#include "qandroidplatformservices.h"
+#include "qandroidplatformfontdatabase.h"
+#include "qandroidplatformclipboard.h"
+#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
+
+#ifndef ANDROID_PLUGIN_OPENGL
+# include "qandroidplatformscreen.h"
+# include "qandroidplatformwindow.h"
+# include <QtPlatformSupport/private/qfbbackingstore_p.h>
+#else
+# include "qeglfswindow.h"
+# include "androidjnimenu.h"
+# include "qandroidopenglcontext.h"
+# include "qandroidopenglplatformwindow.h"
+# include "qeglfshooks.h"
+# include <QtGui/qopenglcontext.h>
+#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 &paramList)
+ : m_touchDevice(0)
+#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;
+ delete m_touchDevice;
+ 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..3f8cc5a809
--- /dev/null
+++ b/src/plugins/platforms/android/src/qandroidplatformintegration.h
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+** 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 <qpa/qplatformintegration.h>
+#include <qpa/qplatformmenu.h>
+#include <qpa/qplatformnativeinterface.h>
+#include <QtWidgets/QAction>
+
+#include <jni.h>
+#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 &paramList);
+ ~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);
+ }
+
+ 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;
+#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 <bogdan@kde.org>
+** 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<quintptr>(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<QAndroidPlatformMenuItem *>(before)),
+ static_cast<QAndroidPlatformMenuItem *>(menuItem));
+}
+
+void QAndroidPlatformMenu::removeMenuItem(QPlatformMenuItem *menuItem)
+{
+ QMutexLocker lock(&m_menuItemsMutex);
+ m_menuItems.erase(qFind(m_menuItems.begin(),
+ m_menuItems.end(),
+ static_cast<QAndroidPlatformMenuItem *>(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 <bogdan@kde.org>
+** 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 <qpa/qplatformmenu.h>
+#include <qvector.h>
+#include <qmutex.h>
+
+class QAndroidPlatformMenuItem;
+class QAndroidPlatformMenu: public QPlatformMenu
+{
+public:
+ typedef QVector<QAndroidPlatformMenuItem *> 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 <bogdan@kde.org>
+** 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<QAndroidPlatformMenu *>(before)),
+ static_cast<QAndroidPlatformMenu *>(menu));
+}
+
+void QAndroidPlatformMenuBar::removeMenu(QPlatformMenu *menu)
+{
+ QMutexLocker lock(&m_menusListMutex);
+ m_menus.erase(qFind(m_menus.begin(),
+ m_menus.end(),
+ static_cast<QAndroidPlatformMenu *>(menu)));
+}
+
+void QAndroidPlatformMenuBar::syncMenu(QPlatformMenu *menu)
+{
+ QtAndroidMenu::syncMenu(static_cast<QAndroidPlatformMenu *>(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 <bogdan@kde.org>
+** 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 <qpa/qplatformmenu.h>
+#include <qvector.h>
+#include <qmutex.h>
+
+class QAndroidPlatformMenu;
+class QAndroidPlatformMenuBar: public QPlatformMenuBar
+{
+public:
+ typedef QVector<QAndroidPlatformMenu *> 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 <bogdan@kde.org>
+** 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<quintptr>(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<QAndroidPlatformMenu *>(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 <bogdan@kde.org>
+** 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 <qpa/qplatformmenu.h>
+
+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 <bogdan@kde.org>
+** 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 <QUrl>
+#include <QDir>
+#include <QDebug>
+
+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<const jchar *>(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 <bogdan@kde.org>
+** 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 <qpa/qplatformservices.h>
+#include "androidjnimain.h"
+#include <jni.h>
+
+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 <bogdan@kde.org>
+** 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 <QVariant>
+#include <QFileInfo>
+
+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 <bogdan@kde.org>
+** 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 <qpa/qplatformtheme.h>
+
+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 <bogdan@kde.org>
+** 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 <bogdan@kde.org>
+** 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 <QtPlatformSupport/private/qfbscreen_p.h>
+
+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 <bogdan@kde.org>
+** 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 <bogdan@kde.org>
+** 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 <qobject.h>
+#include <QtPlatformSupport/private/qfbwindow_p.h>
+
+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/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
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 <qaccessible.h>
-#include <qaccessible2.h>
+#include <QtGui/private/qaccessible2_p.h>
#include <private/qcore_mac_p.h>
#ifndef QT_NO_COCOA_ACCESSIBILITY
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 <QtCore/qglobal.h>
#import <Cocoa/Cocoa.h>
#import <AppKit/NSAccessibility.h>
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 <QAccessible>
-#include "QAccessibleActionInterface"
+#include <QtGui/private/qaccessible2_p.h>
#import <AppKit/NSAccessibility.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 <NSObject>
-- (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 <NSApplicationDelegate> {
bool startedQuit;
NSMenu *dockMenu;
diff --git a/src/plugins/platforms/cocoa/qcocoabackingstore.mm b/src/plugins/platforms/cocoa/qcocoabackingstore.mm
index 31726268f1..4881dcef71 100644
--- a/src/plugins/platforms/cocoa/qcocoabackingstore.mm
+++ b/src/plugins/platforms/cocoa/qcocoabackingstore.mm
@@ -92,8 +92,10 @@ void QCocoaBackingStore::flush(QWindow *win, const QRegion &region, 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<QCocoaWindow *>(win->handle()))
- [cocoaWindow->m_qtView flushBackingStore:this region:region offset:offset];
+ if (!m_qImage.isNull()) {
+ if (QCocoaWindow *cocoaWindow = static_cast<QCocoaWindow *>(win->handle()))
+ [cocoaWindow->m_qtView flushBackingStore:this region:region offset:offset];
+ }
}
void QCocoaBackingStore::resize(const QSize &size, const QRegion &)
diff --git a/src/plugins/platforms/cocoa/qcocoacursor.mm b/src/plugins/platforms/cocoa/qcocoacursor.mm
index a36a855bcd..12808b7041 100644
--- a/src/plugins/platforms/cocoa/qcocoacursor.mm
+++ b/src/plugins/platforms/cocoa/qcocoacursor.mm
@@ -65,8 +65,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;
@@ -104,7 +105,7 @@ 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 && cursor->shape() == Qt::BitmapCursor) {
[cocoaCursor release];
cocoaCursor = 0;
@@ -115,7 +116,7 @@ void QCocoaCursor::changeCursor(QCursor *cursor, QWindow *window)
[[NSCursor arrowCursor] set];
return;
}
- m_cursors.insert(cursor->shape(), cocoaCursor);
+ m_cursors.insert(newShape, cocoaCursor);
}
[cocoaCursor set];
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 <QtGui/qwindowdefs.h>
#include <QtCore/private/qabstracteventdispatcher_p.h>
#include <QtCore/private/qtimerinfo_unix_p.h>
+#include <QtPlatformSupport/private/qcfsocketnotifier_p.h>
#include <CoreFoundation/CoreFoundation.h>
@@ -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<int, MacSocketInfo *> MacSocketHash;
class QCocoaEventDispatcherPrivate : public QAbstractEventDispatcherPrivate
{
@@ -183,7 +177,7 @@ public:
void maybeCancelWaitForMoreEvents();
void ensureNSAppInitialized();
- MacSocketHash macSockets;
+ QCFSocketNotifier cfSocketNotifier;
QList<void *> queuedUserInputEvents; // NSEvent *
CFRunLoopSourceRef postedEventsSource;
CFRunLoopObserverRef waitingObserver;
diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
index a0734530c5..5c487b0bdd 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)
@@ -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<QCocoaEventDispatcherPrivate *>(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, &notifierEvent);
- } else if (callbackType == kCFSocketWriteCallBack) {
- if (socketInfo->writeNotifier)
- QGuiApplication::sendEvent(socketInfo->writeNotifier, &notifierEvent);
- }
-
- 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()
@@ -467,37 +299,35 @@ 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
-#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;
@@ -809,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<QDialog *> dialogs = window->findChildren<QDialog *>();
@@ -850,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();
@@ -942,11 +772,19 @@ QCocoaEventDispatcherPrivate::QCocoaEventDispatcherPrivate()
{
}
+void qt_mac_maybeCancelWaitForMoreEventsForwarder(QAbstractEventDispatcher *eventDispatcher)
+{
+ static_cast<QCocoaEventDispatcher *>(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);
@@ -1021,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();
@@ -1129,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/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
index 61646041fb..9cc0353dc6 100644
--- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
+++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
@@ -77,11 +77,7 @@ typedef QSharedPointer<QFileDialogOptions> 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<NSOpenSavePanelDelegate>
-#else
- : NSObject
-#endif
{
@public
NSOpenPanel *mOpenPanel;
@@ -216,7 +212,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];
if ([mSavePanel isSheet])
[NSApp endSheet: mSavePanel];
@@ -230,6 +226,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())]];
@@ -274,6 +271,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())]];
[mSavePanel setNameFieldStringValue:selectable ? QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.fileName()) : nil];
@@ -405,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();
@@ -577,13 +578,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<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(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<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
- return QCFString::toQString([delegate->mSavePanel directory]);
+ if (delegate)
+ return QCFString::toQString([delegate->mSavePanel directory]);
+ return QString();
}
void QCocoaFileDialogHelper::selectFile(const QString &filename)
@@ -600,12 +604,16 @@ void QCocoaFileDialogHelper::selectFile(const QString &filename)
QStringList QCocoaFileDialogHelper::selectedFiles() const
{
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
- return [delegate selectedFiles];
+ if (delegate)
+ return [delegate selectedFiles];
+ return QStringList();
}
void QCocoaFileDialogHelper::setFilter()
{
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
+ if (!delegate)
+ return;
const SharedPointerFileDialogOptions &opts = options();
[delegate->mSavePanel setTitle:QCFString::toNSString(opts->windowTitle())];
if (opts->isLabelExplicitlySet(QFileDialogOptions::Accept))
@@ -618,9 +626,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<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
+ if (!delegate)
+ return;
[delegate->mPopUpButton selectItemAtIndex:index];
[delegate filterChanged:nil];
}
@@ -629,7 +641,11 @@ void QCocoaFileDialogHelper::selectNameFilter(const QString &filter)
QString QCocoaFileDialogHelper::selectedNameFilter() const
{
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(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();
}
@@ -675,6 +691,8 @@ bool QCocoaFileDialogHelper::showCocoaFilePanel(Qt::WindowModality windowModalit
{
createNSOpenSavePanelDelegate();
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
+ if (!delegate)
+ return false;
if (windowModality == Qt::NonModal)
[delegate showModelessPanel];
else if (windowModality == Qt::WindowModal && parent)
diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.mm b/src/plugins/platforms/cocoa/qcocoaglcontext.mm
index d0f5a58e22..d4673baaef 100644
--- a/src/plugins/platforms/cocoa/qcocoaglcontext.mm
+++ b/src/plugins/platforms/cocoa/qcocoaglcontext.mm
@@ -49,11 +49,19 @@
#import <Cocoa/Cocoa.h>
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 <NSOpenGLPixelFormat *>(qcgl_createNSOpenGLPixelFormat(format));
+ NSOpenGLPixelFormat *pixelFormat = static_cast <NSOpenGLPixelFormat *>(qcgl_createNSOpenGLPixelFormat(m_format));
m_shareContext = share ? static_cast<QCocoaGLContext *>(share)->nsOpenGLContext() : nil;
m_context = [NSOpenGLContext alloc];
@@ -70,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/qcocoahelpers.h b/src/plugins/platforms/cocoa/qcocoahelpers.h
index 831ab579f5..c801d9d926 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 &region);
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 91a6f5a4c7..5ec2cea362 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -47,6 +47,7 @@
#include <QtGui>
#include <qpa/qplatformscreen.h>
#include <private/qguiapplication_p.h>
+#include <private/qwindow_p.h>
#ifndef QT_NO_WIDGETS
#include <QtWidgets/QWidget>
@@ -466,20 +467,17 @@ QString qt_mac_removeMnemonics(const QString &original)
return returnText;
}
-
-CGColorSpaceRef m_genericColorSpace = 0;
-QHash<CGDirectDisplayID, CGColorSpaceRef> m_displayColorSpaceHash;
-bool m_postRoutineRegistered = false;
+static CGColorSpaceRef m_genericColorSpace = 0;
+static QHash<CGDirectDisplayID, CGColorSpaceRef> m_displayColorSpaceHash;
+static bool m_postRoutineRegistered = false;
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();
}
@@ -587,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<QWindow*>(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());
}
@@ -616,11 +632,6 @@ InvalidContext:
return err;
}
-CGFloat qt_mac_get_scalefactor()
-{
- return [[NSScreen mainScreen] userSpaceScaleFactor];
-}
-
Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum)
{
if (buttonNum == 0)
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm
index 93831158d0..d0fcf93b8c 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);
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/qcocoamenu.h b/src/plugins/platforms/cocoa/qcocoamenu.h
index 09b62a9bcd..439b7f1a75 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
@@ -71,11 +69,17 @@ 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);
+ virtual void setIcon(const QIcon &icon) { Q_UNUSED(icon) }
+
+ void setText(const QString &text);
+ void setMinimumWidth(int width);
+ void setFont(const QFont &font);
void setParentItem(QCocoaMenuItem* item);
@@ -102,6 +106,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm
index 676f0683fa..0fe4c48510 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenu.mm
@@ -47,6 +47,8 @@
#include <QtCore/QtDebug>
#include "qcocoaapplication.h"
#include "qcocoamenuloader.h"
+#include "qcocoawindow.h"
+#import "qnsview.h"
static inline QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *getMenuLoader()
{
@@ -133,6 +135,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,9 +306,26 @@ 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 = parentWindow ? static_cast<QCocoaWindow *>(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];
+
+ // 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
{
- 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
diff --git a/src/plugins/platforms/cocoa/qcocoamenuitem.h b/src/plugins/platforms/cocoa/qcocoamenuitem.h
index fe5193a50c..0e6d17343d 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;
@@ -76,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);
@@ -110,8 +109,6 @@ private:
quintptr m_tag;
};
-QT_END_HEADER
-
QT_END_NAMESPACE
#endif
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<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const Q_DECL_OVERRIDE;
+ QList<QPair<QString, QSizeF> > supportedSizesWithNames(const QPrinterInfo &) const Q_DECL_OVERRIDE;
QList<QPrinterInfo> 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<QPair<QString, QSizeF> > QCocoaPrinterSupport::supportedSizesWithNames(const QPrinterInfo &printerInfo) const
+{
+ QList<QPair<QString, QSizeF> > 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<PMPaper>(const_cast<void *>(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/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 <QtCore/qglobal.h>
+
#ifndef QT_NO_SYSTEMTRAYICON
#include "QtCore/qstring.h"
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
+ <NSUserNotificationCenterDelegate>
+#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<CFURLRef> 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/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
index 08c516b4f4..fdb3f4672f 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.h
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -116,6 +116,8 @@ public:
bool setMouseGrabEnabled(bool grab);
QMargins frameMargins() const;
+ void requestActivateWindow();
+
WId winId() const;
void setParent(const QPlatformWindow *window);
@@ -159,6 +161,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 467025c77b..9466b68bec 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -420,6 +420,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);
}
@@ -534,20 +536,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 &region)
{
- if (m_nsWindow) {
- [m_nsWindow setOpaque:NO];
+ if (m_nsWindow)
[m_nsWindow setBackgroundColor:[NSColor clearColor]];
- }
[m_qtView setMaskRegion:&region];
+ updateOpaque();
}
bool QCocoaWindow::setKeyboardGrabEnabled(bool grab)
@@ -691,6 +703,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;
@@ -753,6 +772,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/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/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<qint64, QCocoaTouch*> 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 <qhash.h>
#include <QtCore>
-#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/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h
index 853b4b99e1..5ccea3c387 100644
--- a/src/plugins/platforms/cocoa/qnsview.h
+++ b/src/plugins/platforms/cocoa/qnsview.h
@@ -86,6 +86,10 @@ QT_END_NAMESPACE
- (BOOL)isFlipped;
- (BOOL)acceptsFirstResponder;
+- (BOOL)becomeFirstResponder;
+- (BOOL)hasMask;
+
+- (void)resetMouseButtons;
- (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 0c122eaf2d..e608731cc1 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -304,6 +304,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
{
m_shouldInvalidateWindowShadow = true;
@@ -397,8 +402,27 @@ 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::WindowDoesNotAcceptFocus)
+ return NO;
+ if ((m_window->flags() & Qt::ToolTip) == Qt::ToolTip)
+ return NO;
return YES;
}
@@ -447,6 +471,11 @@ static QTouchDevice *touchDevice = 0;
}
}
+- (void)resetMouseButtons
+{
+ m_buttons = Qt::NoButton;
+}
+
- (void)handleMouseEvent:(NSEvent *)theEvent
{
QPoint qtWindowPoint, qtScreenPoint;
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 <QtGui/private/qaccessible2_p.h>
#include <QtCore/QDebug>
#import <AppKit/NSAccessibility.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 <NSObject>
-//- (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 <NSWindowDelegate>
{
QCocoaWindow *m_cocoaWindow;
diff --git a/src/plugins/platforms/cocoa/qpaintengine_mac.mm b/src/plugins/platforms/cocoa/qpaintengine_mac.mm
index 0b6392fb65..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
@@ -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<HIMutableShapeRef> shape = qt_mac_QRegionToHIMutableShape(rgn);
Q_ASSERT(!HIShapeIsEmpty(shape));
HIShapeReplacePathInCGContext(shape, hd);
- } else
-#endif
- {
+ } else {
QVector<QRect> 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
}
}
@@ -1376,13 +1366,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;
diff --git a/src/plugins/platforms/cocoa/qpaintengine_mac_p.h b/src/plugins/platforms/cocoa/qpaintengine_mac_p.h
index 2763a14690..fa000b9f92 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;
diff --git a/src/plugins/platforms/cocoa/qprintengine_mac.mm b/src/plugins/platforms/cocoa/qprintengine_mac.mm
index 54019372bc..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<PMPaper>(const_cast<void *>(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<QVariant> QMacPrintEnginePrivate::supportedResolutions() const
{
Q_ASSERT_X(printInfo, "QMacPrinterEngine::supportedResolutions",
@@ -190,23 +222,7 @@ QList<QVariant> 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)
@@ -617,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;
@@ -755,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..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 <QtCore/qglobal.h>
+
#ifndef QT_NO_PRINTER
#include <QtPrintSupport/qprinter.h>
@@ -142,6 +144,7 @@ public:
bool newPage_helper();
void setPaperSize(QPrinter::PaperSize ps);
QPrinter::PaperSize paperSize() const;
+ void setPaperName(const QString &name);
QList<QVariant> supportedResolutions() const;
inline bool isPrintSessionInitialized() const
{
diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.cpp b/src/plugins/platforms/directfb/qdirectfbcursor.cpp
index afddba3482..b03af51b1a 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/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 66b42d64e7..51439646c6 100644
--- a/src/plugins/platforms/eglfs/qeglfscontext.cpp
+++ b/src/plugins/platforms/eglfs/qeglfscontext.cpp
@@ -43,14 +43,17 @@
#include "qeglfswindow.h"
#include "qeglfscursor.h"
#include "qeglfshooks.h"
+#include "qeglfsintegration.h"
+#include <QtPlatformSupport/private/qeglpbuffer_p.h>
+#include <QtGui/QSurface>
#include <QtDebug>
QT_BEGIN_NAMESPACE
QEglFSContext::QEglFSContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share,
EGLDisplay display, EGLenum eglApi)
- : QEGLPlatformContext(hooks->surfaceFormatFor(format), share, display, eglApi)
+ : QEGLPlatformContext(QEglFSHooks::hooks()->surfaceFormatFor(format), share, display, QEglFSIntegration::chooseConfig(display, QEglFSHooks::hooks()->surfaceFormatFor(format)), eglApi)
{
}
@@ -61,17 +64,22 @@ bool QEglFSContext::makeCurrent(QPlatformSurface *surface)
EGLSurface QEglFSContext::eglSurfaceForPlatformSurface(QPlatformSurface *surface)
{
- QEglFSWindow *window = static_cast<QEglFSWindow *>(surface);
- return window->surface();
+ if (surface->surface()->surfaceClass() == QSurface::Window)
+ return static_cast<QEglFSWindow *>(surface)->surface();
+ else
+ return static_cast<QEGLPbuffer *>(surface)->pbuffer();
}
void QEglFSContext::swapBuffers(QPlatformSurface *surface)
{
- QEglFSWindow *window = static_cast<QEglFSWindow *>(surface);
- // draw the cursor
- if (QEglFSCursor *cursor = static_cast<QEglFSCursor *>(window->screen()->cursor()))
- cursor->paintOnScreen();
+ if (surface->surface()->surfaceClass() == QSurface::Window) {
+ QEglFSWindow *window = static_cast<QEglFSWindow *>(surface);
+ // draw the cursor
+ if (QEglFSCursor *cursor = static_cast<QEglFSCursor *>(window->screen()->cursor()))
+ cursor->paintOnScreen();
+ }
+ QEglFSHooks::hooks()->waitForVSync();
QEGLPlatformContext::swapBuffers(surface);
}
diff --git a/src/plugins/platforms/eglfs/qeglfscursor.cpp b/src/plugins/platforms/eglfs/qeglfscursor.cpp
index c245b1b5bb..9dc836b8b1 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/eglfs/qeglfshooks.h b/src/plugins/platforms/eglfs/qeglfshooks.h
index 2d095ba934..c4ac7185fb 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;
@@ -67,15 +68,22 @@ 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;
+ 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 e9a22ea605..8200fa70b2 100644
--- a/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
+++ b/src/plugins/platforms/eglfs/qeglfshooks_stub.cpp
@@ -46,15 +46,32 @@
#include <linux/fb.h>
#include <sys/ioctl.h>
+#include <private/qmath_p.h>
+#include <private/qcore_unix_p.h>
+
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";
+}
+
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
@@ -62,6 +79,55 @@ 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 w = -1;
+ int h = -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;
+ }
+ }
+
+ 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;
+}
+
QSize QEglFSHooks::screenSize() const
{
static QSize size;
@@ -78,17 +144,28 @@ QSize QEglFSHooks::screenSize() const
}
struct fb_var_screeninfo vinfo;
- int fd = open("/dev/fb0", O_RDONLY);
- if (fd != -1) {
- if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1)
- qWarning("Could not query variable screen info.");
- else
- size = QSize(vinfo.xres, vinfo.yres);
+ int xres = -1;
+ int yres = -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;
+ }
+ }
+
+ const int defaultWidth = 800;
+ const int defaultHeight = 600;
+ size.setWidth(xres <= 0 ? defaultWidth : xres);
+ size.setHeight(yres <= 0 ? defaultHeight : yres);
- close(fd);
- } else {
- qWarning("Failed to open /dev/fb0 to detect screen resolution.");
+ 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
@@ -107,21 +184,25 @@ int QEglFSHooks::screenDepth() const
if (depth == 0) {
struct fb_var_screeninfo vinfo;
- int fd = open("/dev/fb0", O_RDONLY);
- if (fd != -1) {
- if (ioctl(fd, FBIOGET_VSCREENINFO, &vinfo) == -1)
- qWarning("Could not query variable screen info.");
+ if (framebuffer != -1) {
+ if (ioctl(framebuffer, FBIOGET_VSCREENINFO, &vinfo) == -1)
+ qWarning("EGLFS: Could not query variable screen info.");
else
depth = vinfo.bits_per_pixel;
+ }
+
+ const int defaultDepth = 32;
+
+ if (depth <= 0) {
+ depth = defaultDepth;
- close(fd);
- } else {
- qWarning("Failed to open /dev/fb0 to detect screen depth.");
+ 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
@@ -134,6 +215,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);
@@ -158,6 +244,18 @@ QEglFSCursor *QEglFSHooks::createCursor(QEglFSScreen *screen) const
return 0;
}
+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
QEglFSHooks stubHooks;
#endif
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
index 0dcde9ca36..8cebe16775 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
@@ -49,9 +49,11 @@
#include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h>
#include <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
+#include <QtPlatformSupport/private/qeglconvenience_p.h>
#include <QtPlatformSupport/private/qeglplatformcontext_p.h>
+#include <QtPlatformSupport/private/qeglpbuffer_p.h>
-#if !defined(QT_NO_EVDEV)
+#if !defined(QT_NO_EVDEV) && !defined(Q_OS_ANDROID)
#include <QtPlatformSupport/private/qevdevmousemanager_p.h>
#include <QtPlatformSupport/private/qevdevkeyboardmanager_p.h>
#include <QtPlatformSupport/private/qevdevtouch_p.h>
@@ -61,6 +63,7 @@
#include <QtGui/QSurfaceFormat>
#include <QtGui/QOpenGLContext>
#include <QtGui/QScreen>
+#include <QtGui/QOffscreenSurface>
#include <qpa/qplatformcursor.h>
#include "qeglfscontext.h"
@@ -74,13 +77,13 @@ 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);
#endif
- hooks->platformInit();
+ QEglFSHooks::hooks()->platformInit();
EGLint major, minor;
@@ -89,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");
@@ -119,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) {
@@ -150,7 +153,13 @@ QPlatformBackingStore *QEglFSIntegration::createPlatformBackingStore(QWindow *wi
QPlatformOpenGLContext *QEglFSIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const
{
- return new QEglFSContext(context->format(), 0 /*share*/, mDisplay);
+ return new QEglFSContext(QEglFSHooks::hooks()->surfaceFormatFor(context->format()), context->shareHandle(), mDisplay);
+}
+
+QPlatformOffscreenSurface *QEglFSIntegration::createPlatformOffscreenSurface(QOffscreenSurface *surface) const
+{
+ QEglFSScreen *screen = static_cast<QEglFSScreen *>(surface->screen()->handle());
+ return new QEGLPbuffer(screen->display(), QEglFSHooks::hooks()->surfaceFormatFor(surface->requestedFormat()), surface);
}
QPlatformFontDatabase *QEglFSIntegration::fontDatabase() const
@@ -201,4 +210,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, QEglFSHooks::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 42b132b73a..5427137463 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.h
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.h
@@ -48,8 +48,6 @@
#include <qpa/qplatformnativeinterface.h>
#include <qpa/qplatformscreen.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QEglFSIntegration : public QPlatformIntegration, public QPlatformNativeInterface
@@ -63,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;
@@ -75,6 +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;
@@ -83,6 +87,5 @@ private:
};
QT_END_NAMESPACE
-QT_END_HEADER
#endif // QEGLFSINTEGRATION_H
diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.cpp b/src/plugins/platforms/eglfs/qeglfsscreen.cpp
index 1bc1e944de..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,17 +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 QEglFSHooks::hooks()->physicalScreenSize();
}
QPlatformCursor *QEglFSScreen::cursor() const
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; }
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp
index ceb04901c4..68cef6253e 100644
--- a/src/plugins/platforms/eglfs/qeglfswindow.cpp
+++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp
@@ -76,18 +76,36 @@ 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<QEglFSScreen *>(window()->screen()->handle()))->display();
- QSurfaceFormat platformFormat = hooks->surfaceFormatFor(window()->requestedFormat());
- EGLConfig config = q_configFromGLFormat(display, platformFormat);
- m_format = q_glFormatFromConfig(display, config);
- m_window = hooks->createNativeWindow(hooks->screenSize(), m_format);
- m_surface = eglCreateWindowSurface(display, config, m_window, NULL);
+ QSurfaceFormat platformFormat = QEglFSHooks::hooks()->surfaceFormatFor(window()->requestedFormat());
+ 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<QEglFSScreen *>(window()->screen()->handle()))->display();
+ eglDestroySurface(display, m_surface);
+ m_surface = 0;
+ }
+}
+
+void QEglFSWindow::resetSurface()
+{
+ EGLDisplay display = static_cast<QEglFSScreen *>(screen())->display();
+
+ m_window = QEglFSHooks::hooks()->createNativeWindow(QEglFSHooks::hooks()->screenSize(), m_format);
+ m_surface = eglCreateWindowSurface(display, m_config, m_window, NULL);
if (m_surface == EGL_NO_SURFACE) {
EGLint error = eglGetError();
eglTerminate(display);
@@ -98,13 +116,13 @@ void QEglFSWindow::create()
void QEglFSWindow::destroy()
{
if (m_surface) {
- EGLDisplay display = (static_cast<QEglFSScreen *>(window()->screen()->handle()))->display();
+ EGLDisplay display = static_cast<QEglFSScreen *>(screen())->display();
eglDestroySurface(display, m_surface);
m_surface = 0;
}
if (m_window) {
- hooks->destroyNativeWindow(m_window);
+ QEglFSHooks::hooks()->destroyNativeWindow(m_window);
m_window = 0;
}
}
@@ -113,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
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..842ff17f1c
--- /dev/null
+++ b/src/plugins/platforms/ios/ios.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+
+SUBDIRS += plugin.pro qtmain.pro
diff --git a/src/plugins/platforms/ios/plugin.mm b/src/plugins/platforms/ios/plugin.mm
new file mode 100644
index 0000000000..a93b6037ad
--- /dev/null
+++ b/src/plugins/platforms/ios/plugin.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 <qpa/qplatformintegrationplugin.h>
+#include <qpa/qplatformthemeplugin.h>
+#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..591a0a67ed
--- /dev/null
+++ b/src/plugins/platforms/ios/plugin.pro
@@ -0,0 +1,36 @@
+TARGET = qios
+
+PLUGIN_TYPE = platforms
+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 \
+ qiosviewcontroller.mm \
+ qioscontext.mm \
+ qiosinputcontext.mm \
+ qiostheme.mm \
+ qiosglobal.mm
+
+HEADERS = \
+ qiosintegration.h \
+ qioswindow.h \
+ qiosscreen.h \
+ qioseventdispatcher.h \
+ qiosbackingstore.h \
+ qiosapplicationdelegate.h \
+ qiosviewcontroller.h \
+ qioscontext.h \
+ qiosinputcontext.h \
+ qiostheme.h \
+ qiosglobal.h
+
+#HEADERS = qiossoftwareinputhandler.h
diff --git a/mkspecs/common/ios/GLES/gl.h b/src/plugins/platforms/ios/qiosapplicationdelegate.h
index 2b94b162eb..442b37f1b3 100644
--- a/mkspecs/common/ios/GLES/gl.h
+++ b/src/plugins/platforms/ios/qiosapplicationdelegate.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 qmake spec of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,5 +39,15 @@
**
****************************************************************************/
-#include <OpenGLES/ES1/gl.h>
-#include <OpenGLES/ES1/glext.h>
+#import <UIKit/UIKit.h>
+#import <QtGui/QtGui>
+
+@interface QIOSApplicationDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end
+
+@interface QIOSMainWrapperApplicationDelegate : QIOSApplicationDelegate
+@end
+
diff --git a/src/plugins/platforms/ios/qiosapplicationdelegate.mm b/src/plugins/platforms/ios/qiosapplicationdelegate.mm
new file mode 100644
index 0000000000..41a3fff84f
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosapplicationdelegate.mm
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** 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 "qioswindow.h"
+#include <QtCore/QtCore>
+
+@implementation QIOSApplicationDelegate
+
+@synthesize window;
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ Q_UNUSED(application)
+ Q_UNUSED(launchOptions)
+
+ 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:.
+}
+
+- (void)dealloc
+{
+ [window release];
+ [super dealloc];
+}
+
+@end
+
+
diff --git a/src/plugins/platforms/ios/qiosbackingstore.h b/src/plugins/platforms/ios/qiosbackingstore.h
new file mode 100644
index 0000000000..c110f0e4d1
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosbackingstore.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** 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 QIOSBACKINGSTORE_H
+#define QIOSBACKINGSTORE_H
+
+#include <qpa/qplatformbackingstore.h>
+
+QT_BEGIN_NAMESPACE
+
+class QIOSBackingStore : public QPlatformBackingStore
+{
+public:
+ QIOSBackingStore(QWindow *window);
+ ~QIOSBackingStore();
+
+ QPaintDevice *paintDevice();
+
+ void beginPaint(const QRegion &);
+ void endPaint();
+
+ void flush(QWindow *window, const QRegion &region, const QPoint &offset);
+ void resize(const QSize &size, const QRegion &staticContents);
+
+private:
+ QOpenGLContext *m_context;
+ QPaintDevice *m_device;
+};
+
+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..566ff3a672
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosbackingstore.mm
@@ -0,0 +1,125 @@
+/****************************************************************************
+**
+** 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 "qiosbackingstore.h"
+#include "qioswindow.h"
+
+#include <QtGui/QOpenGLContext>
+#include <QtGui/QOpenGLPaintDevice>
+
+#include <QtDebug>
+
+QIOSBackingStore::QIOSBackingStore(QWindow *window)
+ : QPlatformBackingStore(window)
+ , m_context(new QOpenGLContext)
+ , m_device(0)
+{
+ m_context->setFormat(window->requestedFormat());
+ m_context->setScreen(window->screen());
+ m_context->create();
+}
+
+QIOSBackingStore::~QIOSBackingStore()
+{
+ delete m_context;
+ delete m_device;
+}
+
+void QIOSBackingStore::beginPaint(const QRegion &)
+{
+ // Needed to prevent QOpenGLContext::makeCurrent() from failing
+ window()->setSurfaceType(QSurface::OpenGLSurface);
+
+ m_context->makeCurrent(window());
+
+ static_cast<QOpenGLPaintDevice *>(paintDevice())->setSize(window()->size());
+ QIOSWindow *iosWindow = static_cast<QIOSWindow *>(window()->handle());
+ static_cast<QOpenGLPaintDevice *>(paintDevice())->setSize(window()->size() * iosWindow->devicePixelRatio());
+}
+
+QPaintDevice *QIOSBackingStore::paintDevice()
+{
+ if (!m_device) {
+ QIOSWindow *iosWindow = static_cast<QIOSWindow *>(window()->handle());
+ QOpenGLPaintDevice *openGLDevice = new QOpenGLPaintDevice(window()->size() * iosWindow->devicePixelRatio());
+ openGLDevice->setDevicePixelRatio(iosWindow->devicePixelRatio());
+ m_device = openGLDevice;
+ }
+
+ return m_device;
+}
+
+void QIOSBackingStore::flush(QWindow *window, const QRegion &region, const QPoint &offset)
+{
+ 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);
+}
+
+void QIOSBackingStore::endPaint()
+{
+ // 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)
+{
+ Q_UNUSED(staticContents);
+
+ // 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
diff --git a/src/plugins/platforms/ios/qioscontext.h b/src/plugins/platforms/ios/qioscontext.h
new file mode 100644
index 0000000000..082ec4794c
--- /dev/null
+++ b/src/plugins/platforms/ios/qioscontext.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** 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 <qpa/qplatformopenglcontext.h>
+
+@class EAGLContext;
+
+QT_BEGIN_NAMESPACE
+
+class QIOSContext : public QObject, public QPlatformOpenGLContext
+{
+ Q_OBJECT
+
+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);
+
+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<QWindow *, FramebufferObject> m_framebufferObjects;
+};
+
+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..d3966964e0
--- /dev/null
+++ b/src/plugins/platforms/ios/qioscontext.mm
@@ -0,0 +1,204 @@
+/****************************************************************************
+**
+** 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 <dlfcn.h>
+
+#include <QtGui/QOpenGlContext>
+
+#import <OpenGLES/EAGL.h>
+#import <QuartzCore/CAEAGLLayer.h>
+
+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()
+{
+ [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;
+}
+
+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);
+ Q_ASSERT(surface->surface()->surfaceClass() == QSurface::Window);
+ QWindow *window = static_cast<QWindow *>(surface->surface());
+ Q_ASSERT(m_framebufferObjects.contains(window));
+
+ [EAGLContext setCurrentContext:m_eaglContext];
+ glBindRenderbuffer(GL_RENDERBUFFER, m_framebufferObjects[window].colorRenderbuffer);
+ [m_eaglContext presentRenderbuffer:GL_RENDERBUFFER];
+}
+
+GLuint QIOSContext::defaultFramebufferObject(QPlatformSurface *surface) const
+{
+ Q_ASSERT(surface && surface->surface()->surfaceClass() == QSurface::Window);
+ QWindow *window = static_cast<QWindow *>(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<QIOSWindow *>(surface);
+ if (framebufferObject.renderbufferWidth != platformWindow->effectiveWidth() ||
+ framebufferObject.renderbufferHeight != platformWindow->effectiveHeight()) {
+
+ glBindRenderbuffer(GL_RENDERBUFFER, framebufferObject.colorRenderbuffer);
+ UIView *view = reinterpret_cast<UIView *>(platformWindow->winId());
+ CAEAGLLayer *layer = static_cast<CAEAGLLayer *>(view.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;
+}
+
+void QIOSContext::windowDestroyed(QObject *object)
+{
+ QWindow *window = static_cast<QWindow *>(object);
+ if (m_framebufferObjects.contains(window)) {
+ deleteBuffers(m_framebufferObjects[window]);
+ m_framebufferObjects.remove(window);
+ }
+}
+
+QFunctionPointer QIOSContext::getProcAddress(const QByteArray& functionName)
+{
+ return reinterpret_cast<QFunctionPointer>(dlsym(RTLD_NEXT, functionName.constData()));
+}
+
+#include "moc_qioscontext.cpp"
+
diff --git a/src/plugins/platforms/ios/qioseventdispatcher.h b/src/plugins/platforms/ios/qioseventdispatcher.h
new file mode 100644
index 0000000000..53a75618ce
--- /dev/null
+++ b/src/plugins/platforms/ios/qioseventdispatcher.h
@@ -0,0 +1,133 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+/****************************************************************************
+**
+** 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 <QtCore/qabstracteventdispatcher.h>
+#include <QtCore/private/qtimerinfo_unix_p.h>
+#include <QtPlatformSupport/private/qcfsocketnotifier_p.h>
+#include <CoreFoundation/CoreFoundation.h>
+
+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<QAbstractEventDispatcher::TimerInfo> registeredTimers(QObject *object) const;
+
+ int remainingTime(int timerId);
+
+ void wakeUp();
+ void interrupt();
+ void flush();
+
+private:
+ bool m_interrupted;
+
+ CFRunLoopSourceRef m_postedEventsRunLoopSource;
+ CFRunLoopSourceRef m_blockingTimerRunLoopSource;
+
+ QTimerInfoList m_timerInfoList;
+ CFRunLoopTimerRef m_runLoopTimerRef;
+
+ QCFSocketNotifier m_cfSocketNotifier;
+
+ 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
+
+#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..e9bf039047
--- /dev/null
+++ b/src/plugins/platforms/ios/qioseventdispatcher.mm
@@ -0,0 +1,322 @@
+/****************************************************************************
+**
+** 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 "qioseventdispatcher.h"
+#import "qiosapplicationdelegate.h"
+#include <qdebug.h>
+#include <qpa/qwindowsysteminterface.h>
+#include <QtCore/QThread>
+#include <QtCore/private/qcoreapplication_p.h>
+#include <UIKit/UIApplication.h>
+
+QT_BEGIN_NAMESPACE
+QT_USE_NAMESPACE
+
+static Boolean runLoopSourceEqualCallback(const void *info1, const void *info2)
+{
+ return info1 == info2;
+}
+
+void QIOSEventDispatcher::postedEventsRunLoopCallback(void *info)
+{
+ QIOSEventDispatcher *self = static_cast<QIOSEventDispatcher *>(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<QIOSEventDispatcher *>(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<QIOSEventDispatcher *>(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()
+{
+ QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::AllEvents);
+}
+
+QIOSEventDispatcher::QIOSEventDispatcher(QObject *parent)
+ : QAbstractEventDispatcher(parent)
+ , m_interrupted(false)
+ , m_runLoopTimerRef(0)
+{
+ m_cfSocketNotifier.setHostEventDispatcher(this);
+
+ CFRunLoopRef mainRunLoop = CFRunLoopGetMain();
+ CFRunLoopSourceContext context;
+ bzero(&context, sizeof(CFRunLoopSourceContext));
+ context.equal = runLoopSourceEqualCallback;
+ context.info = this;
+
+ // 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_postedEventsRunLoopSource, kCFRunLoopCommonModes);
+ CFRelease(m_postedEventsRunLoopSource);
+
+ qDeleteAll(m_timerInfoList);
+ maybeStopCFRunLoopTimer();
+ CFRunLoopRemoveSource(CFRunLoopGetMain(), m_blockingTimerRunLoopSource, kCFRunLoopCommonModes);
+ CFRelease(m_blockingTimerRunLoopSource);
+
+ m_cfSocketNotifier.removeSocketNotifiers();
+}
+
+bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
+{
+ m_interrupted = false;
+ bool eventsProcessed = false;
+
+ bool excludeUserEvents = flags & QEventLoop::ExcludeUserInputEvents;
+ bool execFlagSet = (flags & QEventLoop::DialogExec) || (flags & QEventLoop::EventLoopExec);
+ bool useExecMode = execFlagSet && !excludeUserEvents;
+
+ if (useExecMode) {
+ NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
+ while ([runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]] && !m_interrupted);
+ eventsProcessed = true;
+ } else {
+ if (!(flags & QEventLoop::WaitForMoreEvents))
+ wakeUp();
+ eventsProcessed = [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
+ }
+ return eventsProcessed;
+}
+
+bool QIOSEventDispatcher::hasPendingEvents()
+{
+ qDebug() << __FUNCTION__ << "not implemented";
+ return false;
+}
+
+void QIOSEventDispatcher::registerSocketNotifier(QSocketNotifier *notifier)
+{
+ m_cfSocketNotifier.registerSocketNotifier(notifier);
+}
+
+void QIOSEventDispatcher::unregisterSocketNotifier(QSocketNotifier *notifier)
+{
+ m_cfSocketNotifier.unregisterSocketNotifier(notifier);
+}
+
+void QIOSEventDispatcher::registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *obj)
+{
+#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)
+{
+#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)
+{
+#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<QAbstractEventDispatcher::TimerInfo> QIOSEventDispatcher::registeredTimers(QObject *object) const
+{
+#ifndef QT_NO_DEBUG
+ if (!object) {
+ qWarning("QIOSEventDispatcher:registeredTimers: invalid argument");
+ return QList<TimerInfo>();
+ }
+#endif
+
+ return m_timerInfoList.registeredTimers(object);
+}
+
+int QIOSEventDispatcher::remainingTime(int timerId)
+{
+#ifndef QT_NO_DEBUG
+ if (timerId < 1) {
+ qWarning("QIOSEventDispatcher::remainingTime: invalid argument");
+ return -1;
+ }
+#endif
+
+ return m_timerInfoList.timerRemainingTime(timerId);
+}
+
+void QIOSEventDispatcher::wakeUp()
+{
+ CFRunLoopSourceSignal(m_postedEventsRunLoopSource);
+ CFRunLoopWakeUp(CFRunLoopGetMain());
+}
+
+void QIOSEventDispatcher::interrupt()
+{
+ wakeUp();
+ m_interrupted = true;
+}
+
+void QIOSEventDispatcher::flush()
+{
+ // X11 only.
+}
+
+QT_END_NAMESPACE
+
diff --git a/src/plugins/platforms/ios/qiosglobal.h b/src/plugins/platforms/ios/qiosglobal.h
new file mode 100644
index 0000000000..3be9f8bb21
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosglobal.h
@@ -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$
+**
+****************************************************************************/
+
+#ifndef QIOSGLOBAL_H
+#define QIOSGLOBAL_H
+
+#import <UIKit/UIKit.h>
+#include <QtCore/QtCore>
+
+@class QIOSViewController;
+
+QT_BEGIN_NAMESPACE
+
+class QPlatformScreen;
+
+bool isQtApplication();
+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, QPlatformScreen *screen);
+
+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..5860078372
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosglobal.mm
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** 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 "qiosapplicationdelegate.h"
+#include "qiosviewcontroller.h"
+#include "qiosscreen.h"
+
+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;
+}
+
+QIOSViewController *rootViewController()
+{
+ static QIOSViewController *c = isQtApplication() ?
+ static_cast<QIOSViewController *>([UIApplication sharedApplication].delegate.window.rootViewController) : nil;
+ return c;
+}
+
+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);
+}
+
+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;
+ 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<Qt::ScreenOrientation>(-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;
+}
+
+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 = screen->geometry();
+ return geometry.width() < geometry.height() ? rect
+ : QRect(rect.y(), 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
new file mode 100644
index 0000000000..176ad05733
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosinputcontext.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 QIOSINPUTCONTEXT_H
+#define QIOSINPUTCONTEXT_H
+
+#include <UIKit/UIKit.h>
+
+#include <qpa/qplatforminputcontext.h>
+
+QT_BEGIN_NAMESPACE
+
+@class QIOSKeyboardListener;
+
+class QIOSInputContext : public QPlatformInputContext
+{
+public:
+ QIOSInputContext();
+ ~QIOSInputContext();
+
+ QRectF keyboardRect() const;
+ void showInputPanel();
+ void hideInputPanel();
+ bool isInputPanelVisible() const;
+
+ void focusViewChanged(UIView *view);
+
+private:
+ QIOSKeyboardListener *m_keyboardListener;
+ UIView *m_focusView;
+};
+
+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..1d3ab12de9
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosinputcontext.mm
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** 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 "qiosinputcontext.h"
+#include "qioswindow.h"
+#include <QGuiApplication>
+
+@interface QIOSKeyboardListener : NSObject {
+@public
+ QIOSInputContext *m_context;
+ BOOL m_keyboardVisible;
+ QRectF m_keyboardRect;
+}
+@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];
+
+ m_keyboardRect = fromPortraitToPrimary(fromCGRect(frame), QGuiApplication::primaryScreen()->handle());
+ m_context->emitKeyboardRectChanged();
+
+ 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])
+ , m_focusView(0)
+{
+}
+
+QIOSInputContext::~QIOSInputContext()
+{
+ [m_keyboardListener release];
+ [m_focusView release];
+}
+
+QRectF QIOSInputContext::keyboardRect() const
+{
+ return m_keyboardListener->m_keyboardRect;
+}
+
+void QIOSInputContext::showInputPanel()
+{
+ // 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 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()
+{
+ [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/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h
new file mode 100644
index 0000000000..329a0a3d9b
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosintegration.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 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 QPLATFORMINTEGRATION_UIKIT_H
+#define QPLATFORMINTEGRATION_UIKIT_H
+
+#include <qpa/qplatformintegration.h>
+#include <qpa/qplatformnativeinterface.h>
+#include <qpa/qwindowsysteminterface.h>
+
+QT_BEGIN_NAMESPACE
+
+class QIOSIntegration : public QPlatformIntegration, public QPlatformNativeInterface
+{
+public:
+ QIOSIntegration();
+ ~QIOSIntegration();
+
+ bool hasCapability(Capability cap) const;
+
+ QPlatformWindow *createPlatformWindow(QWindow *window) const;
+ QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const;
+
+ QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const;
+
+ QPlatformFontDatabase *fontDatabase() const;
+ QPlatformInputContext *inputContext() const;
+
+ QVariant styleHint(StyleHint hint) const;
+
+ QStringList themeNames() const;
+ QPlatformTheme *createPlatformTheme(const QString &name) const;
+
+ QAbstractEventDispatcher *guiThreadEventDispatcher() const;
+ QPlatformNativeInterface *nativeInterface() const;
+
+ 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
+
+#endif
+
diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm
new file mode 100644
index 0000000000..c7541c3e38
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosintegration.mm
@@ -0,0 +1,180 @@
+/****************************************************************************
+**
+** 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 "qiosintegration.h"
+#include "qioswindow.h"
+#include "qiosbackingstore.h"
+#include "qiosscreen.h"
+#include "qioseventdispatcher.h"
+#include "qioscontext.h"
+#include "qiosinputcontext.h"
+#include "qiostheme.h"
+
+#include <QtPlatformSupport/private/qcoretextfontdatabase_p.h>
+
+#include <QtDebug>
+
+QT_BEGIN_NAMESPACE
+
+QIOSIntegration::QIOSIntegration()
+ : m_fontDatabase(new QCoreTextFontDatabase)
+ , m_inputContext(new QIOSInputContext)
+ , 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);
+
+ 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;
+}
+
+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
+{
+ 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
+{
+ 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);
+ return new QIOSContext(context);
+}
+
+QAbstractEventDispatcher *QIOSIntegration::guiThreadEventDispatcher() const
+{
+ return new QIOSEventDispatcher();
+}
+
+QPlatformFontDatabase * QIOSIntegration::fontDatabase() const
+{
+ return m_fontDatabase;
+}
+
+QPlatformInputContext *QIOSIntegration::inputContext() const
+{
+ return m_inputContext;
+}
+
+QVariant QIOSIntegration::styleHint(StyleHint hint) const
+{
+ switch (hint) {
+ case ShowIsFullScreen:
+ return true;
+ default:
+ return QPlatformIntegration::styleHint(hint);
+ }
+}
+
+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<QIOSIntegration *>(this);
+}
+
+void *QIOSIntegration::nativeResourceForWindow(const QByteArray &resource, QWindow *window)
+{
+ if (!window || !window->handle())
+ return 0;
+
+ QByteArray lowerCaseResource = resource.toLower();
+
+ QIOSWindow *platformWindow = static_cast<QIOSWindow *>(window->handle());
+
+ if (lowerCaseResource == "uiview")
+ return reinterpret_cast<void *>(platformWindow->winId());
+
+ return 0;
+}
+
+QTouchDevice *QIOSIntegration::touchDevice()
+{
+ return m_touchDevice;
+}
+
+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..40c7a3ccf7
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosscreen.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 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 QIOSSCREEN_H
+#define QIOSSCREEN_H
+
+#include <UIKit/UIKit.h>
+
+#include <qpa/qplatformscreen.h>
+
+@class QIOSOrientationListener;
+
+QT_BEGIN_NAMESPACE
+
+class QIOSScreen : public QPlatformScreen
+{
+public:
+ QIOSScreen(unsigned int screenIndex);
+ ~QIOSScreen();
+
+ enum ScreenIndex { MainScreen = 0 };
+
+ QRect geometry() const;
+ QRect availableGeometry() const;
+ int depth() const;
+ QImage::Format format() const;
+ QSizeF physicalSize() const;
+ QDpi logicalDpi() const;
+ qreal devicePixelRatio() const;
+
+ Qt::ScreenOrientation nativeOrientation() const;
+ Qt::ScreenOrientation orientation() const;
+ void setOrientationUpdateMask(Qt::ScreenOrientations mask);
+
+ 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;
+};
+
+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..3265ed8e37
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosscreen.mm
@@ -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 "qiosglobal.h"
+#include "qiosscreen.h"
+#include "qioswindow.h"
+#include <qpa/qwindowsysteminterface.h>
+#include "qiosapplicationdelegate.h"
+#include "qiosviewcontroller.h"
+
+#include <sys/sysctl.h>
+
+@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
+
+/*!
+ 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)])
+ , m_orientationListener(0)
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+ QString deviceIdentifier = deviceModelIdentifier();
+
+ if (deviceIdentifier == QStringLiteral("iPhone2,1") /* iPhone 3GS */
+ || deviceIdentifier == QStringLiteral("iPod3,1") /* iPod touch 3G */) {
+ m_depth = 18;
+ } else {
+ m_depth = 24;
+ }
+
+ int unscaledDpi = 163; // Regular iPhone DPI
+ if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad
+ && deviceIdentifier != QStringLiteral("iPad2,5") /* iPad Mini */) {
+ unscaledDpi = 132;
+ };
+
+ 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;
+
+ if (isQtApplication()) {
+ // When in a non-mixed environment, let QScreen follow the current interface orientation:
+ setPrimaryOrientation(toQtScreenOrientation(rootViewController().interfaceOrientation));
+ }
+
+ [pool release];
+}
+
+QIOSScreen::~QIOSScreen()
+{
+ [m_orientationListener release];
+}
+
+QRect QIOSScreen::geometry() const
+{
+ return m_geometry;
+}
+
+QRect QIOSScreen::availableGeometry() const
+{
+ return m_availableGeometry;
+}
+
+int QIOSScreen::depth() const
+{
+ return m_depth;
+}
+
+QImage::Format QIOSScreen::format() const
+{
+ return QImage::Format_ARGB32_Premultiplied;
+}
+
+QSizeF QIOSScreen::physicalSize() const
+{
+ return m_physicalSize;
+}
+
+QDpi QIOSScreen::logicalDpi() const
+{
+ return QDpi(72, 72);
+}
+
+qreal QIOSScreen::devicePixelRatio() const
+{
+ return [m_uiScreen scale];
+}
+
+Qt::ScreenOrientation QIOSScreen::nativeOrientation() const
+{
+ return Qt::PortraitOrientation;
+}
+
+Qt::ScreenOrientation QIOSScreen::orientation() const
+{
+ return toQtScreenOrientation([UIDevice currentDevice].orientation);
+}
+
+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];
+ }
+}
+
+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):
+ 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), this);
+
+ QWindowSystemInterface::handleScreenGeometryChange(screen(), m_geometry);
+ QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(), m_availableGeometry);
+}
+
+UIScreen *QIOSScreen::uiScreen() const
+{
+ return m_uiScreen;
+}
+
+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..5dad6b8d86
--- /dev/null
+++ b/src/plugins/platforms/ios/qiossoftwareinputhandler.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** 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 QIOSSOFTWAREINPUTHANDLER_H
+#define QIOSSOFTWAREINPUTHANDLER_H
+
+#include <QtCore/QObject>
+#include <QtCore/QPointer>
+#include <QtWidgets/QWidget>
+
+QT_BEGIN_NAMESPACE
+
+class QIOSSoftwareInputHandler : public QObject
+{
+ Q_OBJECT
+
+public:
+ QIOSSoftwareInputHandler() : m_CurrentFocusWidget(0), m_CurrentFocusObject(0) {}
+ bool eventFilter(QObject *obj, QEvent *event);
+
+private slots:
+ void activeFocusChanged(bool focus);
+
+private:
+ bool closeSoftwareInputPanel(QWidget *widget);
+
+ QPointer<QWidget> m_currentFocusWidget;
+ QPointer<QObject> m_currentFocusObject;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/mkspecs/unsupported/macx-iosdevice-g++-legacy/qplatformdefs.h b/src/plugins/platforms/ios/qiostheme.h
index 5f80a17860..5ccbcac710 100644
--- a/mkspecs/unsupported/macx-iosdevice-g++-legacy/qplatformdefs.h
+++ b/src/plugins/platforms/ios/qiostheme.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 qmake spec of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,4 +39,26 @@
**
****************************************************************************/
-#include "../../common/ios/qplatformdefs.h"
+#ifndef QIOSTHEME_H
+#define QIOSTHEME_H
+
+#include <qpa/qplatformtheme.h>
+
+QT_BEGIN_NAMESPACE
+
+class QIOSTheme : public QPlatformTheme
+{
+public:
+ QIOSTheme();
+ ~QIOSTheme();
+
+ QVariant themeHint(ThemeHint hint) const;
+
+ const QFont *font(Font type = SystemFont) const;
+
+ static const char *name;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/gui/text/qrawfont_ft.cpp b/src/plugins/platforms/ios/qiostheme.mm
index 5cac45b216..f98781f8a7 100644
--- a/src/gui/text/qrawfont_ft.cpp
+++ b/src/plugins/platforms/ios/qiostheme.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 plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,91 +39,58 @@
**
****************************************************************************/
-#include <QtCore/qglobal.h>
+#include "qiostheme.h"
-#if !defined(QT_NO_RAWFONT)
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
-#include "qrawfont_p.h"
-#include "qfontengine_ft_p.h"
-#include "quuid.h"
+#include <QtGui/QFont>
+#include <UIKit/UIFont.h>
+#include <UIKit/UIInterface.h>
QT_BEGIN_NAMESPACE
-class QFontEngineFTRawFont
-
- : public QFontEngineFT
+const char *QIOSTheme::name = "ios";
+QIOSTheme::QIOSTheme()
{
-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()
+QIOSTheme::~QIOSTheme()
{
- // Font engine handles all resources
}
-void QRawFontPrivate::platformLoadFromData(const QByteArray &fontData, qreal pixelSize,
- QFont::HintingPreference hintingPreference)
+QVariant QIOSTheme::themeHint(ThemeHint hint) const
{
- Q_ASSERT(fontEngine == 0);
-
- QFontDef fontDef;
- fontDef.pixelSize = pixelSize;
-
- QFontEngineFTRawFont *fe = new QFontEngineFTRawFont(fontDef);
- if (!fe->initFromData(fontData)) {
- delete fe;
- return;
+ switch (hint) {
+ case QPlatformTheme::StyleNames:
+ return QStringList(QStringLiteral("fusion"));
+ default:
+ return QPlatformTheme::themeHint(hint);
}
+}
- 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;
+const QFont *QIOSTheme::font(Font type) const
+{
+ static QHash<QPlatformTheme::Font, QFont *> 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]));
}
- fontEngine = fe;
- fontEngine->ref.ref();
+ return fonts.value(type, 0);
}
QT_END_NAMESPACE
-
-#endif // QT_NO_RAWFONT
diff --git a/mkspecs/unsupported/macx-iosdevice-clang/qplatformdefs.h b/src/plugins/platforms/ios/qiosviewcontroller.h
index 5f80a17860..d5a61cb3f4 100644
--- a/mkspecs/unsupported/macx-iosdevice-clang/qplatformdefs.h
+++ b/src/plugins/platforms/ios/qiosviewcontroller.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 qmake spec of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,4 +39,8 @@
**
****************************************************************************/
-#include "../../common/ios/qplatformdefs.h"
+#import <UIKit/UIKit.h>
+
+@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..c52bfd7345
--- /dev/null
+++ b/src/plugins/platforms/ios/qiosviewcontroller.mm
@@ -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 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"
+
+#include <QtGui/QGuiApplication>
+#include <QtGui/QScreen>
+#include "qiosscreen.h"
+#include "qiosglobal.h"
+
+@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
+ // updates it means it would like to enable auto-rotation, and vice versa.
+ if (QGuiApplication *guiApp = qobject_cast<QGuiApplication *>(qApp))
+ return !guiApp->primaryScreen()->orientationUpdateMask();
+ else
+ return YES; // Startup case: QGuiApplication is not ready yet.
+
+ // 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.
+ return UIInterfaceOrientationMaskAll;
+}
+
+- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
+{
+ Q_UNUSED(duration);
+ Qt::ScreenOrientation orientation = toQtScreenOrientation(toInterfaceOrientation);
+ if (orientation == -1)
+ return;
+
+ QIOSScreen *qiosScreen = static_cast<QIOSScreen *>(QGuiApplication::primaryScreen()->handle());
+ qiosScreen->setPrimaryOrientation(orientation);
+}
+
+@end
+
diff --git a/src/plugins/platforms/ios/qioswindow.h b/src/plugins/platforms/ios/qioswindow.h
new file mode 100644
index 0000000000..cefb6f9388
--- /dev/null
+++ b/src/plugins/platforms/ios/qioswindow.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** 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 QIOSWINDOW_H
+#define QIOSWINDOW_H
+
+#include <qpa/qplatformwindow.h>
+#include <qpa/qwindowsysteminterface.h>
+
+#import <UIKit/UIKit.h>
+
+class QIOSContext;
+class QIOSWindow;
+
+@interface UIView (QIOS)
+@property(readonly) QWindow *qwindow;
+@end
+
+QT_BEGIN_NAMESPACE
+
+class QIOSWindow : public QPlatformWindow
+{
+public:
+ explicit QIOSWindow(QWindow *window);
+ ~QIOSWindow();
+
+ void setGeometry(const QRect &rect);
+
+ void setWindowState(Qt::WindowState state);
+ void setParent(const QPlatformWindow *window);
+ void handleContentOrientationChange(Qt::ScreenOrientation orientation);
+ void setVisible(bool visible);
+
+ void raise() { raiseOrLower(true); }
+ void lower() { raiseOrLower(false); }
+ void requestActivateWindow();
+
+ qreal devicePixelRatio() const;
+ int effectiveWidth() const;
+ int effectiveHeight() const;
+
+ WId winId() const { return WId(m_view); };
+
+ QList<QWindowSystemInterface::TouchPoint> &touchPoints() { return m_touchPoints; }
+ QHash<UITouch *, int> &activeTouches() { return m_activeTouches; }
+ int &touchId() { return m_touchId; }
+
+private:
+ UIView *m_view;
+ QList<QWindowSystemInterface::TouchPoint> m_touchPoints;
+ QHash<UITouch *, int> m_activeTouches;
+ int m_touchId;
+
+ QRect m_requestedGeometry;
+ int m_windowLevel;
+ qreal m_devicePixelRatio;
+
+ void raiseOrLower(bool raise);
+ void updateWindowLevel();
+ bool blockedByModal();
+};
+
+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..e4fb5e2e1c
--- /dev/null
+++ b/src/plugins/platforms/ios/qioswindow.mm
@@ -0,0 +1,523 @@
+/****************************************************************************
+**
+** 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 "qioswindow.h"
+#include "qioscontext.h"
+#include "qiosinputcontext.h"
+#include "qiosscreen.h"
+#include "qiosapplicationdelegate.h"
+#include "qiosviewcontroller.h"
+#include "qiosintegration.h"
+#include <QtGui/private/qguiapplication_p.h>
+#include <qpa/qplatformintegration.h>
+
+#import <QuartzCore/CAEAGLLayer.h>
+
+#include <QtGui/QKeyEvent>
+#include <qpa/qwindowsysteminterface.h>
+
+#include <QtDebug>
+
+@interface EAGLView : UIView <UIKeyInput>
+{
+@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
+{
+ return [CAEAGLLayer class];
+}
+
+-(id)initWithQIOSWindow:(QIOSWindow *)window
+{
+ if (self = [self initWithFrame:toCGRect(window->geometry())])
+ m_qioswindow = window;
+
+ return self;
+}
+
+- (id)initWithFrame:(CGRect)frame
+{
+ if ((self = [super initWithFrame:frame])) {
+ // Set up EAGL layer
+ CAEAGLLayer *eaglLayer = static_cast<CAEAGLLayer *>(self.layer);
+ eaglLayer.opaque = TRUE;
+ eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking,
+ kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
+
+ // Set up text input
+ autocapitalizationType = UITextAutocapitalizationTypeNone;
+ autocorrectionType = UITextAutocorrectionTypeNo;
+ enablesReturnKeyAutomatically = NO;
+ keyboardAppearance = UIKeyboardAppearanceDefault;
+ keyboardType = UIKeyboardTypeDefault;
+ returnKeyType = UIReturnKeyDone;
+ secureTextEntry = NO;
+
+ if (isQtApplication())
+ self.hidden = YES;
+
+ self.multipleTouchEnabled = YES;
+ }
+
+ 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))
+ qWarning() << m_qioswindow->window()
+ << "is backed by a UIView that has a transform set. This is not supported.";
+
+ 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];
+}
+
+/*
+ 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
+{
+ QList<QWindowSystemInterface::TouchPoint> &touchPoints = m_qioswindow->touchPoints();
+ QHash<UITouch *, int> &activeTouches = m_qioswindow->activeTouches();
+
+ // Mark all touch points as stationary
+ for (QList<QWindowSystemInterface::TouchPoint>::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
+ 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);
+ }
+}
+
+- (void) sendTouchEventWithTimestamp:(ulong)timeStamp
+{
+ // Send touch event synchronously
+ QIOSIntegration *iosIntegration = static_cast<QIOSIntegration *>(QGuiApplicationPrivate::platformIntegration());
+ QWindowSystemInterface::handleTouchEvent(m_qioswindow->window(), timeStamp,
+ iosIntegration->touchDevice(), m_qioswindow->touchPoints());
+ QWindowSystemInterface::flushWindowSystemEvents();
+}
+
+- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
+{
+ QWindow *window = m_qioswindow->window();
+
+ // Transfer focus to the touched window:
+ if (window != QGuiApplication::focusWindow())
+ m_qioswindow->requestActivateWindow();
+
+ // Track Cocoa touch id to Qt touch id. The UITouch pointer is constant
+ // for the touch duration.
+ QHash<UITouch *, int> &activeTouches = m_qioswindow->activeTouches();
+ QList<QWindowSystemInterface::TouchPoint> &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 updateTouchList:touches withState:Qt::TouchPointMoved];
+ [self sendTouchEventWithTimestamp:ulong(event.timestamp * 1000)];
+}
+
+- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
+{
+ [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<UITouch *, int> &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
+{
+ 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<QIOSIntegration *>(QGuiApplicationPrivate::platformIntegration());
+ QWindowSystemInterface::handleTouchCancelEvent(m_qioswindow->window(), ulong(event.timestamp * 1000), iosIntegration->touchDevice());
+ QWindowSystemInterface::flushWindowSystemEvents();
+}
+
+@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
+
+@implementation UIView (QIOS)
+
+- (QWindow *)qwindow
+{
+ if ([self isKindOfClass:[EAGLView class]])
+ return static_cast<EAGLView *>(self)->m_qioswindow->window();
+ return nil;
+}
+
+@end
+
+QT_BEGIN_NAMESPACE
+
+QIOSWindow::QIOSWindow(QWindow *window)
+ : QPlatformWindow(window)
+ , m_view([[EAGLView alloc] initWithQIOSWindow:this])
+ , m_touchId(0)
+ , m_requestedGeometry(QPlatformWindow::geometry())
+ , m_windowLevel(0)
+ , m_devicePixelRatio(1.0)
+{
+ setParent(parent());
+ 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()
+{
+ [m_view removeFromSuperview];
+ [m_view release];
+}
+
+bool QIOSWindow::blockedByModal()
+{
+ QWindow *modalWindow = QGuiApplication::modalWindow();
+ return modalWindow && modalWindow != window();
+}
+
+void QIOSWindow::setVisible(bool visible)
+{
+ QPlatformWindow::setVisible(visible);
+ m_view.hidden = !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)
+ updateWindowLevel();
+
+ if (blockedByModal()) {
+ if (visible)
+ raise();
+ return;
+ }
+
+ if (visible) {
+ requestActivateWindow();
+ } else {
+ // 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) {
+ static_cast<QIOSWindow *>(window->handle())->requestActivateWindow();
+ break;
+ }
+ }
+ }
+ }
+}
+
+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:
+ m_requestedGeometry = 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);
+}
+
+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: {
+ // 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; }
+ default:
+ m_view.frame = toCGRect(m_requestedGeometry);
+ m_view.autoresizingMask = UIViewAutoresizingNone;
+ break;
+ }
+}
+
+void QIOSWindow::setParent(const QPlatformWindow *parentWindow)
+{
+ if (parentWindow) {
+ UIView *parentView = reinterpret_cast<UIView *>(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
+ // 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<QIOSInputContext *>(context)->focusViewChanged(m_view);
+ QPlatformWindow::requestActivateWindow();
+}
+
+void QIOSWindow::raiseOrLower(bool raise)
+{
+ // Re-insert m_view at the correct index among its sibling views
+ // (QWindows) according to their current m_windowLevel:
+ if (!isQtApplication())
+ return;
+
+ NSArray *subviews = m_view.superview.subviews;
+ if (subviews.count == 1)
+ return;
+
+ for (int i = int(subviews.count) - 1; i >= 0; --i) {
+ UIView *view = static_cast<UIView *>([subviews objectAtIndex:i]);
+ if (view.hidden || view == m_view)
+ continue;
+ int level = static_cast<QIOSWindow *>(view.qwindow->handle())->m_windowLevel;
+ if (m_windowLevel > level || (raise && m_windowLevel == level)) {
+ [m_view.superview insertSubview:m_view aboveSubview:view];
+ return;
+ }
+ }
+ [m_view.superview insertSubview:m_view atIndex:0];
+}
+
+void QIOSWindow::updateWindowLevel()
+{
+ Qt::WindowType type = static_cast<Qt::WindowType>(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<QIOSWindow *>(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
+ // that the task bar (and associated gestures) are aligned correctly:
+ UIDeviceOrientation uiOrientation = fromQtScreenOrientation(orientation);
+ [[UIApplication sharedApplication] setStatusBarOrientation:uiOrientation animated:NO];
+}
+
+qreal QIOSWindow::devicePixelRatio() const
+{
+ return m_devicePixelRatio;
+}
+
+int QIOSWindow::effectiveWidth() const
+{
+ return geometry().width() * m_devicePixelRatio;
+}
+
+int QIOSWindow::effectiveHeight() const
+{
+ return geometry().height() * m_devicePixelRatio;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/ios/qtmain.mm b/src/plugins/platforms/ios/qtmain.mm
new file mode 100644
index 0000000000..916224f936
--- /dev/null
+++ b/src/plugins/platforms/ios/qtmain.mm
@@ -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 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"
+#include "qiosviewcontroller.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 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
+ self.window.rootViewController = [[[QIOSViewController alloc] init] autorelease];
+
+#ifdef QT_DEBUG
+ self.window.backgroundColor = [UIColor cyanColor];
+#endif
+
+ [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 didFinishLaunchingWithOptions: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<char *>(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..cbcb272217
--- /dev/null
+++ b/src/plugins/platforms/ios/qtmain.pro
@@ -0,0 +1,8 @@
+TARGET = qiosmain
+
+PLUGIN_TYPE = platforms
+load(qt_plugin)
+
+QT += gui-private
+
+OBJECTIVE_SOURCES = qtmain.mm
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
diff --git a/src/plugins/platforms/kms/qkmscursor.cpp b/src/plugins/platforms/kms/qkmscursor.cpp
index d9345ce89b..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,57 +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);
- if (widgetCursor->shape() != Qt::BitmapCursor) {
- m_cursorImage->set(widgetCursor->shape());
- } 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());
+ const Qt::CursorShape newShape = windowCursor ? windowCursor->shape() : Qt::ArrowCursor;
+ if (newShape != Qt::BitmapCursor) {
+ m_cursorImage->set(newShape);
} 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 <qpa/qplatformcursor.h>
-#define EGL_EGLEXT_PROTOTYPES 1
-
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-
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;
};
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)
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());
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 <qpa/qplatformintegration.h>
#include <qpa/qplatformscreen.h>
-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/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 <qpa/qplatformintegrationplugin.h>
+#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 <QtGui/private/qpixmap_raster_p.h>
+#include <QtGui/private/qguiapplication_p.h>
+
+#include <qpa/qplatformcursor.h>
+#include <qpa/qplatformwindow.h>
+
+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 &region, 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<QRect> 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<WId> ids = m_windowAreaHash.keys();
+ foreach (WId id, ids) {
+ QHash<WId, QOffscreenBackingStore *>::iterator it = m_backingStoreForWinIdHash.find(id);
+ if (it.value() == this)
+ m_backingStoreForWinIdHash.remove(id);
+ }
+ m_windowAreaHash.clear();
+}
+
+QHash<WId, QOffscreenBackingStore *> 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 <qpa/qplatformbackingstore.h>
+#include <qpa/qplatformdrag.h>
+#include <qpa/qplatformintegration.h>
+#include <qpa/qplatformscreen.h>
+#include <qpa/qplatformwindow.h>
+
+#include <qscopedpointer.h>
+#include <qimage.h>
+#include <qhash.h>
+
+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<QPlatformCursor> 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 &region, 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<WId, QRect> m_windowAreaHash;
+
+ static QHash<WId, QOffscreenBackingStore *> 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 <QtPlatformSupport/private/qgenericunixeventdispatcher_p.h>
+#if defined(Q_OS_MAC)
+#include <qpa/qplatformfontdatabase.h>
+#else
+#include <QtPlatformSupport/private/qgenericunixfontdatabase_p.h>
+#endif
+#elif defined(Q_OS_WIN)
+#include <QtPlatformSupport/private/qbasicfontdatabase_p.h>
+#include <QtCore/private/qeventdispatcher_win_p.h>
+#endif
+
+#include <QtGui/private/qpixmap_raster_p.h>
+#include <QtGui/private/qguiapplication_p.h>
+
+#include <qpa/qplatformservices.h>
+
+QT_BEGIN_NAMESPACE
+
+template <typename BaseEventDispatcher>
+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<QEventDispatcherWin32>();
+ 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 <qpa/qplatformintegration.h>
+
+#include <qscopedpointer.h>
+
+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<QPlatformFontDatabase> m_fontDatabase;
+ QScopedPointer<QPlatformDrag> m_drag;
+ QScopedPointer<QPlatformServices> m_services;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/corelib/io/qfilesystemengine_mac.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration_dummy.cpp
index 65ae06d58d..8bc1b17a56 100644
--- a/src/corelib/io/qfilesystemengine_mac.cpp
+++ b/src/plugins/platforms/offscreen/qoffscreenintegration_dummy.cpp
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** 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.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,10 +39,9 @@
**
****************************************************************************/
-#include "qfilesystemengine_p.h"
+#include "qoffscreenintegration.h"
-QT_BEGIN_NAMESPACE
-
-// Mac-specific implementations only!
-
-QT_END_NAMESPACE
+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..6c6c516a4e
--- /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 <QByteArray>
+#include <QOpenGLContext>
+
+#include <X11/Xlib.h>
+#include <GL/glx.h>
+
+#include <QtPlatformSupport/private/qglxconvenience_p.h>
+
+#include <qpa/qplatformsurface.h>
+#include <qsurface.h>
+
+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<QOffscreenX11GLXContext *>(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)
+ 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);
+ } 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<const GLubyte *>(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 <qglobal.h>
+#include <qscopedpointer.h>
+
+#include <qpa/qplatformopenglcontext.h>
+
+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<QOffscreenX11Connection> 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<QOffscreenX11Info> 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<QOffscreenX11GLXContextData> 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 <qpa/qplatformscreen.h>
+#include <qpa/qwindowsysteminterface.h>
+
+#include <private/qwindow_p.h>
+
+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<WId, QOffscreenWindow *> 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 <qpa/qplatformbackingstore.h>
+#include <qpa/qplatformwindow.h>
+
+#include <qhash.h>
+
+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<WId, QOffscreenWindow *> m_windowForWinIdHash;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforms/platforms.pro b/src/plugins/platforms/platforms.pro
index 828867c3a7..92664826ab 100644
--- a/src/plugins/platforms/platforms.pro
+++ b/src/plugins/platforms/platforms.pro
@@ -1,12 +1,17 @@
TEMPLATE = subdirs
-SUBDIRS += minimal
+android:!android-no-sdk: SUBDIRS += android
+
+SUBDIRS += minimal offscreen
contains(QT_CONFIG, xcb) {
SUBDIRS += xcb
}
-mac:!ios: SUBDIRS += cocoa
+mac {
+ ios: SUBDIRS += ios
+ else: SUBDIRS += cocoa
+}
win32: SUBDIRS += windows
diff --git a/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp b/src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
index 2d19537896..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);
@@ -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/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 <QtCore/qglobal.h>
+
#ifndef QT_NO_CLIPBOARD
#include <qpa/qplatformclipboard.h>
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 dfd7ccf0cc..f9efbde40c 100644
--- a/src/plugins/platforms/qnx/qqnxscreen.cpp
+++ b/src/plugins/platforms/qnx/qqnxscreen.cpp
@@ -553,6 +553,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;
@@ -560,13 +575,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)
@@ -588,4 +602,17 @@ QSharedPointer<QQnxRootWindow> 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<QQnxRootWindow> m_rootWindow;
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 <errno.h>
+#ifdef Q_OS_BLACKBERRY
+#include <sys/pps.h>
+#include <bps/navigator.h>
+#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);
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 <QtGui/qaccessible2.h>
+#include <QtGui/private/qaccessible2_p.h>
#include <QtGui/qclipboard.h>
#include <QtWidgets/qapplication.h>
#include <QtCore/qdebug.h>
diff --git a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp
index 3ccc6212a9..752b9e7c20 100644
--- a/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp
+++ b/src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp
@@ -51,7 +51,7 @@
#include <QtCore/qpointer.h>
#include <QtCore/qsettings.h>
#include <QtGui/qaccessible.h>
-#include <QtGui/qaccessible2.h>
+#include <QtGui/private/qaccessible2_p.h>
#include <qpa/qplatformnativeinterface.h>
#include <QtGui/qwindow.h>
#include <QtGui/qguiapplication.h>
@@ -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();
@@ -213,7 +202,7 @@ void QWindowsAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event)
eventNum %= 50; //[0..49]
int eventId = - (eventNum - 1);
qAccessibleRecentSentEvents()->insert(eventId, qMakePair(QPointer<QObject>(event->object()), event->child()));
- ptrNotifyWinEvent(event->type(), hWnd, OBJID_CLIENT, eventId);
+ ::NotifyWinEvent(event->type(), hWnd, OBJID_CLIENT, eventId);
++eventNum;
}
#endif // Q_OS_WINCE
@@ -283,7 +272,7 @@ bool QWindowsAccessibility::handleAccessibleObjectFromWindowRequest(HWND hwnd, W
{
if (static_cast<long>(lParam) == static_cast<long>(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/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 <oleacc.h>
-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/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 <QtCore/qpair.h>
#include <QtCore/qsettings.h>
#include <QtGui/qaccessible.h>
-#include <QtGui/qaccessible2.h>
+#include <QtGui/private/qaccessible2_p.h>
#include <QtGui/qguiapplication.h>
#include <qpa/qplatformnativeinterface.h>
#include <QtGui/qwindow.h>
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
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index 1ea660d944..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);
}
@@ -783,7 +780,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 +815,7 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
platformWindow->getSizeHints(reinterpret_cast<MINMAXINFO *>(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<NCCALCSIZE_PARAMS *>(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/qwindowscursor.cpp b/src/plugins/platforms/windows/qwindowscursor.cpp
index 4dc9af61d8..5b2a3acbae 100644
--- a/src/plugins/platforms/windows/qwindowscursor.cpp
+++ b/src/plugins/platforms/windows/qwindowscursor.cpp
@@ -395,6 +395,19 @@ QWindowsWindowCursor QWindowsCursor::standardWindowCursor(Qt::CursorShape shape)
}
/*!
+ \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.
This is called frequently as the mouse moves over widgets in the window
@@ -406,11 +419,15 @@ 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());
+ pixmapWindowCursor(*cursorIn) : standardWindowCursor(cursorIn->shape());
if (wcursor.handle()) {
QWindowsWindow::baseWindowOf(window)->setCursor(wcursor);
} else {
@@ -449,6 +466,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();
@@ -464,7 +482,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) :
@@ -488,6 +512,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 b0256d4203..1e818bc9b8 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;
@@ -81,11 +83,14 @@ public:
static QPoint mousePosition();
QWindowsWindowCursor standardWindowCursor(Qt::CursorShape s = Qt::ArrowCursor);
+ QWindowsWindowCursor pixmapWindowCursor(const QCursor &c);
private:
typedef QHash<Qt::CursorShape, QWindowsWindowCursor> StandardCursorCache;
+ typedef QHash<qint64, QWindowsWindowCursor> PixmapCursorCache;
StandardCursorCache m_standardCursorCache;
+ PixmapCursorCache m_pixmapCursorCache;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index 28438dd53d..5cc5230832 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -58,6 +58,10 @@
#include <QtCore/QObject>
#include <QtCore/QThread>
#include <QtCore/QSysInfo>
+#include <QtCore/QSharedData>
+#include <QtCore/QExplicitlySharedDataPointer>
+#include <QtCore/QMutex>
+#include <QtCore/QMutexLocker>
#include <QtCore/private/qsystemlibrary_p.h>
#include "qtwindows_additional.h"
@@ -82,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}};
@@ -249,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)
{
@@ -387,6 +421,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 +438,7 @@ void eatMouseMove()
like close() can be called on them from event handlers.
\endlist
+ \sa QWindowsDialogHelperBase
\internal
\ingroup qt-lighthouse-win
*/
@@ -411,7 +449,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 +469,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
*/
@@ -445,17 +480,12 @@ protected:
template <class BaseClass>
QWindowsDialogHelperBase<BaseClass>::QWindowsDialogHelperBase() :
m_nativeDialog(0),
- m_ownerWindow(0)
+ m_ownerWindow(0),
+ m_timerId(0)
{
}
template <class BaseClass>
-QWindowsDialogHelperBase<BaseClass>::~QWindowsDialogHelperBase()
-{
- delete m_nativeDialog;
-}
-
-template <class BaseClass>
QWindowsNativeDialogBase *QWindowsDialogHelperBase<BaseClass>::nativeDialog() const
{
if (!m_nativeDialog) {
@@ -466,6 +496,19 @@ QWindowsNativeDialogBase *QWindowsDialogHelperBase<BaseClass>::nativeDialog() co
}
template <class BaseClass>
+void QWindowsDialogHelperBase<BaseClass>::deleteNativeDialog()
+{
+ delete m_nativeDialog;
+ m_nativeDialog = 0;
+}
+
+template <class BaseClass>
+void QWindowsDialogHelperBase<BaseClass>::timerEvent(QTimerEvent *)
+{
+ startDialogThread();
+}
+
+template <class BaseClass>
QWindowsNativeDialogBase *QWindowsDialogHelperBase<BaseClass>::ensureNativeDialog()
{
// Create dialog and apply common settings.
@@ -486,22 +529,18 @@ QWindowsNativeDialogBase *QWindowsDialogHelperBase<BaseClass>::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 +551,7 @@ bool QWindowsDialogHelperBase<BaseClass>::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,18 +560,40 @@ bool QWindowsDialogHelperBase<BaseClass>::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);
- 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 <class BaseClass>
+void QWindowsDialogHelperBase<BaseClass>::startDialogThread()
+{
+ QWindowsDialogThread *thread = new QWindowsDialogThread(this);
+ thread->start();
+ stopTimer();
+}
+
+template <class BaseClass>
+void QWindowsDialogHelperBase<BaseClass>::stopTimer()
+{
+ if (m_timerId) {
+ this->killTimer(m_timerId);
+ m_timerId = 0;
+ }
+}
+
+template <class BaseClass>
void QWindowsDialogHelperBase<BaseClass>::hide()
{
if (m_nativeDialog)
@@ -545,8 +606,11 @@ void QWindowsDialogHelperBase<BaseClass>::exec()
{
if (QWindowsContext::verboseDialogs)
qDebug("%s" , __FUNCTION__);
- if (QWindowsNativeDialogBase *nd = nativeDialog())
+ stopTimer();
+ if (QWindowsNativeDialogBase *nd = nativeDialog()) {
nd->exec(m_ownerWindow);
+ deleteNativeDialog();
+ }
}
static inline bool snapToDefaultButtonHint()
@@ -568,6 +632,101 @@ QVariant QWindowsDialogHelperBase<BaseClass>::styleHint(QPlatformDialogHelper::S
}
/*!
+ \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<QFileDialogOptions> &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<Data> 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<QFileDialogOptions> &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 +768,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,15 +817,17 @@ 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;
void selectFile(const QString &fileName) const;
bool hideFiltersDetails() const { return m_hideFiltersDetails; }
@@ -674,14 +835,16 @@ public:
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);
@@ -692,23 +855,30 @@ 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 QStringList libraryItemFolders(IShellItem *item);
+ static QString libraryItemDefaultSaveFolder(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)
{
}
@@ -764,15 +934,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();
+ }
}
}
@@ -832,17 +1004,94 @@ void QWindowsNativeFileDialogBase::setMode(QFileDialogOptions::FileMode mode, QF
qErrnoWarning("%s: SetOptions() failed", __FUNCTION__);
}
-QString QWindowsNativeFileDialogBase::itemPath(IShellItem *item)
+#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.
+
+// 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<void **>(&helper))))
+ if (SUCCEEDED(helper->LoadLibraryFromItem(libraryItem, mode)))
+ helper->QueryInterface(iId_IShellLibrary, reinterpret_cast<void **>(&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<void **>(&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<void **>(&item)))) {
+ result = QWindowsNativeFileDialogBase::itemPath(item);
+ item->Release();
+ }
+ library->Release();
}
return result;
}
+#else // !Q_OS_WINCE && __IShellLibrary_INTERFACE_DEFINED__
+
+QStringList QWindowsNativeFileDialogBase::libraryItemFolders(IShellItem *)
+{
+ return QStringList();
+}
+
+QString QWindowsNativeFileDialogBase::libraryItemDefaultSaveFolder(IShellItem *)
+{
+ return QString();
+}
+
+#endif // Q_OS_WINCE || !__IShellLibrary_INTERFACE_DEFINED__
+
+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 */)
{
@@ -983,14 +1232,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
@@ -1008,6 +1259,7 @@ void QWindowsNativeFileDialogBase::onFolderChange(IShellItem *item)
{
if (item) {
const QString directory = QWindowsNativeFileDialogBase::itemPath(item);
+ m_data.setDirectory(directory);
emit directoryEntered(directory);
}
}
@@ -1015,13 +1267,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)
@@ -1042,6 +1304,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.
@@ -1055,8 +1322,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)"
@@ -1079,17 +1348,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
@@ -1115,23 +1380,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<IFileOpenDialog *>(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
@@ -1150,17 +1415,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;
@@ -1169,16 +1435,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
@@ -1188,8 +1455,9 @@ class QWindowsFileDialogHelper : public QWindowsDialogHelperBase<QPlatformFileDi
{
public:
QWindowsFileDialogHelper() {}
- virtual bool supportsNonModalDialog() const { return false; }
-
+ // For Qt 4 compatibility, do not create native non-modal dialogs on widgets,
+ // but only on QQuickWindows, which do not have a fallback.
+ virtual bool supportsNonModalDialog(const QWindow *parent = 0) const { return isQQuickWindow(parent); }
virtual bool defaultNameFilterDisables() const
{ return true; }
virtual void setDirectory(const QString &directory);
@@ -1205,11 +1473,14 @@ private:
virtual QWindowsNativeDialogBase *createNativeDialog();
inline QWindowsNativeFileDialogBase *nativeFileDialog() const
{ return static_cast<QWindowsNativeFileDialogBase *>(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()));
@@ -1223,6 +1494,7 @@ QWindowsNativeDialogBase *QWindowsFileDialogHelper::createNativeDialog()
// Apply settings.
const QSharedPointer<QFileDialogOptions> &opts = options();
+ m_data.fromOptions(opts);
const QFileDialogOptions::FileMode mode = opts->fileMode();
result->setWindowTitle(opts->windowTitle());
result->setMode(mode, opts->options());
@@ -1234,9 +1506,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);
+ result->updateDirectory();
+ result->updateSelectedNameFilter();
const QStringList initialSelection = opts->initiallySelectedFiles();
if (initialSelection.size() > 0) {
QFileInfo info(initialSelection.front());
@@ -1260,15 +1531,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)
@@ -1282,13 +1552,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()
@@ -1307,15 +1571,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
@@ -1339,20 +1602,12 @@ class QWindowsXpNativeFileDialog : public QWindowsNativeDialogBase
public:
typedef QSharedPointer<QFileDialogOptions> 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:
@@ -1362,19 +1617,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;
@@ -1383,7 +1634,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
@@ -1394,51 +1645,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();
}
@@ -1462,9 +1695,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];
@@ -1536,7 +1771,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
@@ -1544,10 +1779,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
@@ -1616,8 +1851,7 @@ class QWindowsXpFileDialogHelper : public QWindowsDialogHelperBase<QPlatformFile
{
public:
QWindowsXpFileDialogHelper() {}
- virtual bool supportsNonModalDialog() const { return false; }
-
+ virtual bool supportsNonModalDialog(const QWindow *parent = 0) const { return isQQuickWindow(parent); }
virtual bool defaultNameFilterDisables() const
{ return true; }
virtual void setDirectory(const QString &directory);
@@ -1633,11 +1867,14 @@ private:
virtual QWindowsNativeDialogBase *createNativeDialog();
inline QWindowsXpNativeFileDialog *nativeFileDialog() const
{ return static_cast<QWindowsXpNativeFileDialog *>(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;
@@ -1647,47 +1884,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 07f105cb35..7884f398f3 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.h
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.h
@@ -65,6 +65,7 @@ template <class BaseClass>
class QWindowsDialogHelperBase : public BaseClass
{
public:
+ ~QWindowsDialogHelperBase() { deleteNativeDialog(); }
virtual void exec();
virtual bool show(Qt::WindowFlags windowFlags,
@@ -73,19 +74,24 @@ 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();
+ 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
diff --git a/src/plugins/platforms/windows/qwindowsdrag.cpp b/src/plugins/platforms/windows/qwindowsdrag.cpp
index 1286f5c106..fedda750d9 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 <Qt::DropAction, QSharedPointer<DragCursorHandle> > ActionCursorMap;
@@ -490,7 +490,7 @@ QWindowsOleDropSource::GiveFeedback(DWORD dwEffect)
qDebug("%s dwEffect=%lu, action=%d", __FUNCTION__, dwEffect, action);
QSharedPointer<DragCursorHandle> 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/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
index b4fb19e8e8..c59b0edf78 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
@@ -1160,9 +1036,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,
@@ -1215,7 +1089,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(),
sharedFontData());
@@ -1223,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<QWindowsFontEngine *>(fontEngine)->setUniqueFamilyName(uniqueFamilyName);
@@ -1529,8 +1403,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[] = {
@@ -1715,7 +1589,7 @@ static QStringList extraTryFontsForFamily(const QString& family)
return result;
}
-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())
@@ -1885,8 +1759,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;
@@ -1917,7 +1790,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)) {
QStringList extraFonts = extraTryFontsForFamily(request.family);
if (extraFonts.size()) {
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.h b/src/plugins/platforms/windows/qwindowsfontdatabase.h
index c14d6027c2..b9e6c38eaa 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 406dc636b8..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
@@ -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 2ce429d012..d3cbc0210a 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 7fcd9814bd..c402f00453 100644
--- a/src/plugins/platforms/windows/qwindowsfontengine.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp
@@ -66,7 +66,6 @@
#include <QtCore/QThreadStorage>
#include <QtCore/private/qsystemlibrary_p.h>
-#include <QtCore/private/qunicodetables_p.h>
#include <QtCore/QDebug>
#include <limits.h>
@@ -155,9 +154,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 +1051,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);
@@ -1216,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();
@@ -1258,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);
diff --git a/src/plugins/platforms/windows/qwindowsfontengine.h b/src/plugins/platforms/windows/qwindowsfontengine.h
index a23db2f235..2bf6ead503 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<QWindowsFontEngineData> 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;
diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp
index 183acedfc8..5b6ce695d8 100644
--- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp
@@ -376,10 +376,12 @@ void QWindowsFontEngineDirectWrite::recalcAdvances(QGlyphLayout *glyphs, QFontEn
if (SUCCEEDED(hr)) {
for (int i=0; i<glyphs->numGlyphs; ++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__);
}
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 <QtCore/qglobal.h>
+
#ifndef QT_NO_DIRECTWRITE
#include <QtGui/private/qfontengine_p.h>
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)
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp
index da4519199f..30e0478e64 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.cpp
+++ b/src/plugins/platforms/windows/qwindowsintegration.cpp
@@ -77,6 +77,7 @@
#include <QtCore/private/qeventdispatcher_win_p.h>
#include <QtCore/QDebug>
+#include <QtCore/QVariant>
QT_BEGIN_NAMESPACE
@@ -114,6 +115,11 @@ public:
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)
@@ -150,6 +156,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<QWindowsWindow *>(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<QWindowsWindow *>(window);
+ if (name == QLatin1String(customMarginPropertyC))
+ platformWindow->setCustomMargins(qvariant_cast<QMargins>(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)
{
@@ -372,6 +409,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<QMargins>(customMarginsV);
+
const QWindowsWindow::WindowData obtained
= QWindowsWindow::WindowData::create(window, requested, window->title());
if (QWindowsContext::verboseIntegration || QWindowsContext::verboseWindows)
diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp
index 56deb27442..924d604641 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:
@@ -1120,7 +1126,7 @@ QList<int> 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/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<QUrl> urls = mimeData->urls();
for (int i=0; i<urls.size(); i++) {
if (!urls.at(i).toLocalFile().isEmpty())
return true;
}
}
- return (getCf(formatetc) == CF_INETURL_W || getCf(formatetc) == CF_INETURL) && mimeData->hasFormat(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
diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.cpp b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
index e1f4f4b143..dd16ea1c6f 100644
--- a/src/plugins/platforms/windows/qwindowsmousehandler.cpp
+++ b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
@@ -49,6 +49,7 @@
#include <qpa/qwindowsysteminterface.h>
#include <QtGui/QGuiApplication>
#include <QtGui/QScreen>
+#include <QtGui/QWindow>
#include <QtCore/QDebug>
#include <QtCore/QScopedArrayPointer>
@@ -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
diff --git a/src/plugins/platforms/windows/qwindowsservices.cpp b/src/plugins/platforms/windows/qwindowsservices.cpp
index bcae2e0816..250fea56b1 100644
--- a/src/plugins/platforms/windows/qwindowsservices.cpp
+++ b/src/plugins/platforms/windows/qwindowsservices.cpp
@@ -44,6 +44,7 @@
#include <QtCore/QUrl>
#include <QtCore/QDebug>
+#include <QtCore/QDir>
#include <shlobj.h>
#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)));
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index 60b455bac9..6cbe3e8cf7 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -302,7 +302,7 @@ struct WindowCreationData
tool(false), embedded(false), hasAlpha(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;
@@ -454,7 +454,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<QWindowCreationContext> QWindowCreationContextPtr;
@@ -474,7 +474,7 @@ QWindowsWindow::WindowData
const QString windowClassName = QWindowsContext::instance()->registerWindowClass(w, isGL);
- QRect rect = QPlatformWindow::initialGeometry(w, geometry, defaultWindowWidth, defaultWindowHeight);
+ QRect rect = QPlatformWindow::initialGeometry(w, data.geometry, defaultWindowWidth, defaultWindowHeight);
if (title.isEmpty() && (result.flags & Qt::WindowTitleHint))
title = topLevel ? qAppName() : w->objectName();
@@ -482,24 +482,30 @@ QWindowsWindow::WindowData
const wchar_t *titleUtf16 = reinterpret_cast<const wchar_t *>(title.utf16());
const wchar_t *classNameUtf16 = reinterpret_cast<const wchar_t *>(windowClassName.utf16());
- // Capture events before CreateWindowEx() returns.
- const QWindowCreationContextPtr context(new QWindowCreationContext(w, rect, style, exStyle));
+ // Capture events before CreateWindowEx() returns. The context is cleared in
+ // the QWindowsWindow constructor.
+ 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
<< " class=" <<windowClassName << " title=" << title
<< "\nrequested: " << rect << ": "
<< context->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: "
@@ -513,6 +519,7 @@ QWindowsWindow::WindowData
result.geometry = context->obtainedGeometry;
result.frame = context->margins;
result.embedded = embedded;
+ result.customMargins = context->customMargins;
return result;
}
@@ -551,6 +558,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);
@@ -579,9 +588,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)
{
}
@@ -611,6 +621,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<NCCALCSIZE_PARAMS *>(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
{
@@ -627,8 +664,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)
@@ -677,10 +714,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_),
+ geometryHint(w, cm), 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)
{
@@ -691,14 +729,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
@@ -706,7 +746,8 @@ QWindowCreationContext::QWindowCreationContext(const QWindow *w,
<< " frame: " << frameWidth << 'x' << frameHeight << '+'
<< frameX << '+' << frameY
<< " min" << geometryHint.minimumSize
- << " max" << geometryHint.maximumSize;
+ << " max" << geometryHint.maximumSize
+ << " custom margins " << customMargins;
}
/*!
@@ -738,9 +779,6 @@ QWindowsWindow::QWindowsWindow(QWindow *aWindow, const WindowData &data) :
m_hdc(0),
m_windowState(Qt::WindowNoState),
m_opacity(1.0),
-#ifndef QT_NO_CURSOR
- m_cursor(QWindowsScreen::screenOf(aWindow)->windowsCursor()->standardWindowCursor()),
-#endif
m_dropTarget(0),
m_savedStyle(0),
m_format(aWindow->format()),
@@ -755,6 +793,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<QWindowCreationContext>());
QWindowsContext::instance()->addWindow(m_data.hwnd, this);
if (aWindow->isTopLevel()) {
switch (aWindow->type()) {
@@ -881,8 +921,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;
}
@@ -1069,7 +1110,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__,
@@ -1087,14 +1128,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);
@@ -1172,7 +1218,7 @@ QRect QWindowsWindow::frameGeometry_sys() const
QRect QWindowsWindow::geometry_sys() const
{
- return frameGeometry_sys() - frameMargins();
+ return frameGeometry_sys().marginsRemoved(frameMargins());
}
/*!
@@ -1499,7 +1545,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)
@@ -1657,13 +1703,23 @@ 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;
}
#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<QWindowsCursor *>(cursor)->standardWindowCursor(Qt::ArrowCursor);
+ return QWindowsWindowCursor(Qt::ArrowCursor);
+}
+
/*!
\brief Applies to cursor property set on the window to the global cursor.
@@ -1673,20 +1729,45 @@ void QWindowsWindow::getSizeHints(MINMAXINFO *mmi) const
void QWindowsWindow::applyCursor()
{
#ifndef QT_NO_CURSOR
- SetCursor(m_cursor.handle());
+ 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());
+ }
#endif
}
+// 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)
{
#ifndef QT_NO_CURSOR
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();
}
#endif
@@ -1859,4 +1940,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 f3b480b0af..87397f1c1d 100644
--- a/src/plugins/platforms/windows/qwindowswindow.h
+++ b/src/plugins/platforms/windows/qwindowswindow.h
@@ -67,8 +67,9 @@ 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
void applyToMinMaxInfo(DWORD style, DWORD exStyle, MINMAXINFO *mmi) const;
void applyToMinMaxInfo(HWND hwnd, MINMAXINFO *mmi) const;
@@ -84,11 +85,13 @@ struct QWindowsGeometryHint
QSize minimumSize;
QSize maximumSize;
+ QMargins customMargins;
};
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 +104,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 +141,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;
@@ -191,6 +196,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);
@@ -290,17 +298,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
@@ -371,4 +368,6 @@ inline void QWindowsWindow::destroyIcon()
QT_END_NAMESPACE
+Q_DECLARE_METATYPE(QMargins)
+
#endif // QWINDOWSWINDOW_H
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 += \
diff --git a/src/plugins/platforms/xcb/qglxintegration.cpp b/src/plugins/platforms/xcb/qglxintegration.cpp
index 2a6ef5a6ee..516b35dac8 100644
--- a/src/plugins/platforms/xcb/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/qglxintegration.cpp
@@ -50,6 +50,7 @@
#include <GL/glx.h>
#include <QtGui/QOpenGLContext>
+#include <QtGui/QOffscreenSurface>
#include "qglxintegration.h"
#include <QtPlatformSupport/private/qglxconvenience_p.h>
@@ -70,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
@@ -122,46 +127,53 @@ 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)
: 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 && m_format.renderableType() != QSurfaceFormat::OpenGLES)
+ return;
+
if (share)
m_shareContext = static_cast<const QGLXContext*>(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
@@ -174,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<int> 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];
@@ -198,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;
+ }
+
+ int flags = 0;
- if (m_format.testOption(QSurfaceFormat::DebugContext))
- flags |= GLX_CONTEXT_DEBUG_BIT_ARB;
+ if (m_format.testOption(QSurfaceFormat::DebugContext))
+ flags |= GLX_CONTEXT_DEBUG_BIT_ARB;
- // 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;
+ // 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;
+ 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;
@@ -232,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
@@ -243,11 +278,15 @@ 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);
} 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)
@@ -286,19 +325,35 @@ bool QGLXContext::makeCurrent(QPlatformSurface *surface)
{
Q_ASSERT(surface->surface()->surfaceType() == QSurface::OpenGLSurface);
- GLXDrawable glxDrawable = static_cast<QXcbWindow *>(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<QXcbWindow *>(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<QGLXPbuffer *>(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<QXcbWindow *>(surface)->xcb_window();
+ GLXDrawable glxDrawable = 0;
+ if (surface->surface()->surfaceClass() == QSurface::Offscreen)
+ glxDrawable = static_cast<QGLXPbuffer *>(surface)->pbuffer();
+ else
+ glxDrawable = static_cast<QXcbWindow *>(surface)->xcb_window();
glXSwapBuffers(DISPLAY_FROM_XCB(m_screen), glxDrawable);
}
@@ -350,4 +405,36 @@ bool QGLXContext::isValid() const
return m_context != 0;
}
+
+QGLXPbuffer::QGLXPbuffer(QOffscreenSurface *offscreenSurface)
+ : QPlatformOffscreenSurface(offscreenSurface)
+ , m_format(offscreenSurface->requestedFormat())
+ , m_screen(static_cast<QXcbScreen *>(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)
+ qglx_surfaceFormatFromGLXFBConfig(&m_format, 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 98aee78b14..7116b2389d 100644
--- a/src/plugins/platforms/xcb/qglxintegration.h
+++ b/src/plugins/platforms/xcb/qglxintegration.h
@@ -46,6 +46,7 @@
#include "qxcbscreen.h"
#include <qpa/qplatformopenglcontext.h>
+#include <qpa/qplatformoffscreensurface.h>
#include <QtGui/QSurfaceFormat>
#include <QtCore/QMutex>
@@ -76,6 +77,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/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index 4525cb8ccb..1504bd99d2 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
@@ -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<typename T>
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/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp
index e29b21c9c8..ff40c6a9ab 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
@@ -300,18 +306,20 @@ 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;
- 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/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index 60acf1ff02..f0cabea43d 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 <QtPlatformSupport/private/qeglplatformcontext_p.h>
+#include <QtPlatformSupport/private/qeglpbuffer_p.h>
#endif
#include <QtGui/QOpenGLContext>
#include <QtGui/QScreen>
+#include <QtGui/QOffscreenSurface>
#ifndef QT_NO_ACCESSIBILITY
#include <qpa/qplatformaccessibility.h>
#ifndef QT_NO_ACCESSIBILITY_ATSPI_BRIDGE
@@ -165,7 +167,10 @@ public:
EGLSurface eglSurfaceForPlatformSurface(QPlatformSurface *surface)
{
- return static_cast<QXcbWindow *>(surface)->eglSurface()->surface();
+ if (surface->surface()->surfaceClass() == QSurface::Window)
+ return static_cast<QXcbWindow *>(surface)->eglSurface()->surface();
+ else
+ return static_cast<QEGLPbuffer *>(surface)->pbuffer();
}
private:
@@ -195,6 +200,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<QXcbScreen *>(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) {
@@ -209,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/qxcbintegration.h b/src/plugins/platforms/xcb/qxcbintegration.h
index 1dd8d4576b..6db9d82cca 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.h
+++ b/src/plugins/platforms/xcb/qxcbintegration.h
@@ -64,6 +64,8 @@ public:
#endif
QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const;
+ QPlatformOffscreenSurface *createPlatformOffscreenSurface(QOffscreenSurface *surface) const;
+
bool hasCapability(Capability cap) const;
QAbstractEventDispatcher *guiThreadEventDispatcher() const;
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);
}
}
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index 11ce1126ae..5af6a9ec9d 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)
{
@@ -158,6 +188,7 @@ QXcbWindow::QXcbWindow(QWindow *window)
, m_transparent(false)
, m_usingSyncProtocol(false)
, m_deferredActivation(false)
+ , m_embedded(false)
, m_netWmUserTimeWindow(XCB_NONE)
, m_dirtyFrameMargins(false)
#if defined(XCB_USE_EGL)
@@ -169,7 +200,10 @@ QXcbWindow::QXcbWindow(QWindow *window)
setConnection(m_screen->connection());
- create();
+ if (window->type() != Qt::ForeignWindow)
+ create();
+ else
+ m_window = window->winId();
}
void QXcbWindow::create()
@@ -236,8 +270,10 @@ void QXcbWindow::create()
}
xcb_window_t xcb_parent_id = m_screen->root();
- if (parent())
+ if (parent()) {
xcb_parent_id = static_cast<QXcbWindow *>(parent())->xcb_window();
+ m_embedded = parent()->window()->type() == Qt::ForeignWindow;
+ }
m_format = window()->requestedFormat();
@@ -371,6 +407,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;
@@ -413,7 +457,8 @@ void QXcbWindow::create()
QXcbWindow::~QXcbWindow()
{
- destroy();
+ if (window()->type() != Qt::ForeignWindow)
+ destroy();
}
void QXcbWindow::destroy()
@@ -577,9 +622,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<const QXcbWindow *>(tp->handle())->winId();
// Default to client leader if there is no transient parent, else modal dialogs can
// be hidden by their parents.
@@ -1143,7 +1189,15 @@ void QXcbWindow::setParent(const QPlatformWindow *parent)
{
QPoint topLeft = geometry().topLeft();
- xcb_window_t xcb_parent_id = parent ? static_cast<const QXcbWindow *>(parent)->xcb_window() : m_screen->root();
+ xcb_window_t xcb_parent_id;
+ if (parent) {
+ const QXcbWindow *qXcbParent = static_cast<const QXcbWindow *>(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()));
}
@@ -1274,6 +1328,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;
@@ -1437,7 +1498,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);
}
@@ -1479,6 +1541,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) {
@@ -1509,6 +1618,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<const QXcbWindow *>(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);
@@ -1664,6 +1782,7 @@ void QXcbWindow::handlePropertyNotifyEvent(const xcb_property_notify_event_t *ev
QWindowSystemInterface::handleWindowStateChanged(window(), newState);
m_lastWindowStateEvent = newState;
}
+ return;
}
}
@@ -1675,7 +1794,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.
@@ -1683,7 +1802,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 *)
@@ -1747,6 +1877,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<QFocusEvent *>(event);
+ switch (focusEvent->reason()) {
+ case Qt::TabFocusReason:
+ case Qt::BacktabFocusReason:
+ {
+ const QXcbWindow *container =
+ static_cast<const QXcbWindow *>(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);
@@ -1775,6 +1934,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::ActivatedWindowEvent *>
+ (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<QXcbWindow*>(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 6a8b98ff0d..f4bd2d96ff 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();
@@ -185,6 +193,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/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..bb02192f91
--- /dev/null
+++ b/src/plugins/platformthemes/gtk2/gtk2.pro
@@ -0,0 +1,20 @@
+TARGET = qgtk2
+
+PLUGIN_TYPE = platformthemes
+PLUGIN_CLASS_NAME = QGtk2ThemePlugin
+load(qt_plugin)
+
+QT += core-private gui-private platformsupport-private
+
+CONFIG += X11
+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..13e7d57b13
--- /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 <qpa/qplatformthemeplugin.h>
+#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 &params);
+};
+
+QPlatformTheme *QGtk2ThemePlugin::create(const QString &key, const QStringList &params)
+{
+ Q_UNUSED(params);
+ if (!key.compare(QLatin1String(QGtk2Theme::name), 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..25d45eb81d
--- /dev/null
+++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.cpp
@@ -0,0 +1,609 @@
+/****************************************************************************
+**
+** 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 <qeventloop.h>
+#include <qwindow.h>
+#include <qcolor.h>
+#include <qdebug.h>
+#include <qfont.h>
+
+#include <private/qguiapplication_p.h>
+
+#undef signals
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <pango/pango.h>
+
+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);
+}
+
+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<QFileDialogOptions> &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<QFileDialogOptions> &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);
+ }
+}
+
+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<float>(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<QFontDialogOptions> &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
new file mode 100644
index 0000000000..c2d12625f5
--- /dev/null
+++ b/src/plugins/platformthemes/gtk2/qgtk2dialoghelpers.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 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 <QtCore/qscopedpointer.h>
+#include <qpa/qplatformdialoghelper.h>
+
+typedef struct _GtkDialog GtkDialog;
+typedef struct _GtkFileFilter GtkFileFilter;
+
+QT_BEGIN_NAMESPACE
+
+class QGtk2Dialog;
+
+class QGtk2ColorDialogHelper : public QPlatformColorDialogHelper
+{
+ Q_OBJECT
+
+public:
+ QGtk2ColorDialogHelper();
+ ~QGtk2ColorDialogHelper();
+
+ bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent);
+ void exec();
+ void hide();
+
+ void setCurrentColor(const QColor &color);
+ QColor currentColor() const;
+
+private Q_SLOTS:
+ void onAccepted();
+
+private:
+ static void onColorChanged(QGtk2ColorDialogHelper *helper);
+ void applyOptions();
+
+ QScopedPointer<QGtk2Dialog> d;
+};
+
+class QGtk2FileDialogHelper : public QPlatformFileDialogHelper
+{
+ Q_OBJECT
+
+public:
+ QGtk2FileDialogHelper();
+ ~QGtk2FileDialogHelper();
+
+ bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent);
+ void exec();
+ void hide();
+
+ 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();
+
+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<QString, GtkFileFilter*> _filters;
+ QHash<GtkFileFilter*, QString> _filterNames;
+ QScopedPointer<QGtk2Dialog> d;
+};
+
+class QGtk2FontDialogHelper : public QPlatformFontDialogHelper
+{
+ Q_OBJECT
+
+public:
+ QGtk2FontDialogHelper();
+ ~QGtk2FontDialogHelper();
+
+ bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent);
+ void exec();
+ void hide();
+
+ void setCurrentFont(const QFont &font);
+ QFont currentFont() const;
+
+private Q_SLOTS:
+ void onAccepted();
+
+private:
+ void applyOptions();
+
+ QScopedPointer<QGtk2Dialog> 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..f069d9f97c
--- /dev/null
+++ b/src/plugins/platformthemes/gtk2/qgtk2theme.cpp
@@ -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 "qgtk2theme.h"
+#include "qgtk2dialoghelpers.h"
+#include <QVariant>
+
+#undef signals
+#include <gtk/gtk.h>
+
+#include <X11/Xlib.h>
+
+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 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
+{
+ 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);
+ return true;
+}
+
+QPlatformDialogHelper *QGtk2Theme::createPlatformDialogHelper(DialogType type) const
+{
+ switch (type) {
+ case ColorDialog:
+ return new QGtk2ColorDialogHelper;
+ case FileDialog:
+ return new QGtk2FileDialogHelper;
+ case FontDialog:
+ return new QGtk2FontDialogHelper;
+ 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..a0bd34ed9f
--- /dev/null
+++ b/src/plugins/platformthemes/gtk2/qgtk2theme.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** 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 <private/qgenericunixthemes_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QGtk2Theme : public QGnomeTheme
+{
+public:
+ QGtk2Theme();
+
+ QVariant themeHint(ThemeHint hint) const;
+
+ bool usePlatformNativeDialog(DialogType type) const;
+ 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..516105401e 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -1,7 +1,8 @@
TEMPLATE = subdirs
-SUBDIRS *= sqldrivers bearer
-qtHaveModule(gui): SUBDIRS *= imageformats platforms platforminputcontexts generic
+SUBDIRS *= sqldrivers
+qtHaveModule(network): SUBDIRS += bearer
+qtHaveModule(gui): SUBDIRS *= imageformats platforms platforminputcontexts platformthemes generic
qtHaveModule(widgets): SUBDIRS += accessible
!wince*:qtHaveModule(widgets): SUBDIRS += printsupport
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<QPrinter::PaperSize>(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<int>(pageSizes->choices[i].marked) == 1)
+ if (static_cast<int>(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/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<QPrinter::PaperSize> QCupsPrinterSupport::supportedPaperSizes(const QPrint
return QCUPSSupport::getCupsPrinterPaperSizes(printerIndex(printerInfo));
}
+QList<QPair<QString, QSizeF> > 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 43fe871021..e9fe24203e 100644
--- a/src/plugins/printsupport/cups/qcupsprintersupport_p.h
+++ b/src/plugins/printsupport/cups/qcupsprintersupport_p.h
@@ -52,7 +52,6 @@
#include <cups/cups.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
typedef int (*CupsGetDests)(cups_dest_t **dests);
@@ -68,6 +67,7 @@ public:
virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode);
virtual QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode);
virtual QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const;
+ virtual QList<QPair<QString, QSizeF> > supportedSizesWithNames(const QPrinterInfo &) const;
virtual QString printerOption(const QPrinterInfo &printer, const QString &key) const;
virtual PrinterOptions printerOptions(const QPrinterInfo &printer) const;
@@ -86,7 +86,6 @@ private:
};
QT_END_NAMESPACE
-QT_END_HEADER
#endif // QT_NO_PRINTER
#endif // QCUPSPRINTERSUPPORT_H
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<QPrinter::PaperSize> QWindowsPrinterSupport::supportedPaperSizes(const QPr
return QWin32PrintEngine::supportedPaperSizes(printerInfo);
}
+QList<QPair<QString, QSizeF> >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 afa341a82f..1d5a4f3da4 100644
--- a/src/plugins/printsupport/windows/qwindowsprintersupport.h
+++ b/src/plugins/printsupport/windows/qwindowsprintersupport.h
@@ -44,7 +44,6 @@
#include <qpa/qplatformprintersupport.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
class QWin32PrintEngine;
@@ -58,9 +57,9 @@ public:
virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode);
virtual QPaintEngine *createPaintEngine(QPrintEngine *printEngine, QPrinter::PrinterMode);
virtual QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const;
+ virtual QList<QPair<QString, QSizeF> >supportedSizesWithNames(const QPrinterInfo &printerInfo) const;
};
QT_END_NAMESPACE
-QT_END_HEADER
#endif // WINDOWSPRINTERSUPPORT_H
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 <qsqldriverplugin.h>
#include <qstringlist.h>
-#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 <qsqldriverplugin.h>
#include <qstringlist.h>
-#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 <qsqldriverplugin.h>
#include <qstringlist.h>
-#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 <qsqldriverplugin.h>
#include <qstringlist.h>
-#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 <qsqldriverplugin.h>
#include <qstringlist.h>
-#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 <qsqldriverplugin.h>
#include <qstringlist.h>
-#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 <qsqldriverplugin.h>
#include <qstringlist.h>
-#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 <qsqldriverplugin.h>
#include <qstringlist.h>
-#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 <windows.h>
#endif
-#include "../../../sql/drivers/tds/qsql_tds.h"
+#include "../../../sql/drivers/tds/qsql_tds_p.h"
QT_BEGIN_NAMESPACE
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
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 <QtWidgets/qdialog.h>
#include <QtPrintSupport/qtprintsupportglobal.h>
-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 <QtWidgets/qdialog.h>
#include <QtPrintSupport/qtprintsupportglobal.h>
-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/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<QPrinter::PaperSize>(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<int>(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/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 <QtPrintSupport/qabstractprintdialog.h>
-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/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/printsupport/kernel/qcups.cpp b/src/printsupport/kernel/qcups.cpp
index 30de3d301c..d2deee1db3 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<QPrinter::PaperSize> QCUPSSupport::getCupsPrinterPaperSizes(int cupsPrinte
return result;
}
+QList<QPair<QString, QSizeF> > QCUPSSupport::getCupsPrinterPaperSizesWithNames(int cupsPrinterIndex)
+{
+ QList<QPair<QString, QSizeF> > 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::fromUtf8(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<Printer> availableUnixPrinters();
static QList<QPrinter::PaperSize> getCupsPrinterPaperSizes(int cupsPrinterIndex);
+ static QList<QPair<QString, QSizeF> > getCupsPrinterPaperSizesWithNames(int cupsPrinterIndex);
private:
void collectMarkedOptions(QStringList& list, const ppd_group_t* group = 0) const;
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 <QtCore/qglobal.h>
+
#ifndef QT_NO_PRINTER
#include "private/qpaintengine_p.h"
#include <QtPrintSupport/qtprintsupportglobal.h>
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<QPrinter::PaperSize> QPlatformPrinterSupport::supportedPaperSizes(const QP
return QList<QPrinter::PaperSize>();
}
+QList<QPair<QString, QSizeF> > QPlatformPrinterSupport::supportedSizesWithNames(const QPrinterInfo &) const
+{
+ return QList<QPair<QString, QSizeF> >();
+}
+
QList<QPrinterInfo> QPlatformPrinterSupport::availablePrinters()
{
return m_printers;
diff --git a/src/printsupport/kernel/qplatformprintersupport.h b/src/printsupport/kernel/qplatformprintersupport.h
index 5d3c7d0aa6..c4ffcffd1e 100644
--- a/src/printsupport/kernel/qplatformprintersupport.h
+++ b/src/printsupport/kernel/qplatformprintersupport.h
@@ -55,8 +55,6 @@
#include <QtCore/qlist.h>
#include <QtCore/qhash.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
#ifndef QT_NO_PRINTER
@@ -74,7 +72,7 @@ public:
virtual QPrintEngine *createNativePrintEngine(QPrinter::PrinterMode printerMode);
virtual QPaintEngine *createPaintEngine(QPrintEngine *, QPrinter::PrinterMode printerMode);
virtual QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &) const;
-
+ virtual QList<QPair<QString, QSizeF> > supportedSizesWithNames(const QPrinterInfo &printerInfo) const;
virtual QList<QPrinterInfo> availablePrinters();
virtual QPrinterInfo defaultPrinter();
virtual QPrinterInfo printerInfo(const QString &printerName);
@@ -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 <QtCore/qfactoryinterface.h>
#include <QtPrintSupport/qtprintsupportglobal.h>
-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..3993a22bef 100644
--- a/src/printsupport/kernel/qprintengine.h
+++ b/src/printsupport/kernel/qprintengine.h
@@ -45,8 +45,6 @@
#include <QtCore/qvariant.h>
#include <QtPrintSupport/qprinter.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -86,6 +84,7 @@ public:
PPK_PageMargins,
PPK_CopyCount,
PPK_SupportsMultipleCopies,
+ PPK_PaperName,
PPK_PaperSize = PPK_PageSize,
PPK_CustomBase = 0xff00
@@ -106,6 +105,4 @@ public:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPRINTENGINE_H
diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp
index 97453f2e0e..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<const wchar_t*>(d->name.utf16()),
+ NULL, DC_PAPERNAMES, NULL, NULL);
+ if ((int)size > 0) {
+ wchar_t *paperNames = new wchar_t[size*64];
+ size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(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<const wchar_t*>(d->name.utf16()),
+ NULL, DC_PAPERS, NULL, NULL);
+ if ((int)size > 0) {
+ wchar_t *papers = new wchar_t[size];
+ size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(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<const wchar_t*>(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<const wchar_t*>(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<const wchar_t*>(d->name.utf16()),
+ NULL, DC_PAPERNAMES, NULL, NULL);
+ if ((int)size > 0) {
+ wchar_t *papers = new wchar_t[size*64];
+ size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(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,6 +1671,36 @@ QList<QPrinter::PaperSize> QWin32PrintEngine::supportedPaperSizes(const QPrinter
return returnList;
}
+QList<QPair<QString, QSizeF> > QWin32PrintEngine::supportedSizesWithNames(const QPrinterInfo &printerInfo)
+{
+ QList<QPair<QString, QSizeF> > paperSizes;
+ if (printerInfo.isNull())
+ return paperSizes;
+ DWORD size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16()),
+ NULL, DC_PAPERNAMES, NULL, NULL);
+ if ((int)size > 0) {
+ wchar_t *papers = new wchar_t[size*64];
+ size = DeviceCapabilities(reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16()),
+ NULL, DC_PAPERNAMES, papers, NULL);
+ DWORD size2 = DeviceCapabilities(reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16()),
+ NULL, DC_PAPERSIZE, NULL, NULL);
+ if ((int)size2 > 0) {
+ POINT *points = new POINT[size2*sizeof(POINT)];
+
+ size2 = DeviceCapabilities(reinterpret_cast<const wchar_t*>(printerInfo.printerName().utf16()),
+ NULL, DC_PAPERSIZE, (wchar_t *)points, NULL);
+ for (int i=0;i<(int)size;i++) {
+ 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;
+ }
+ 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..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 <QtCore/qglobal.h>
+
#ifndef QT_NO_PRINTER
#include <QtGui/qpaintengine.h>
@@ -104,6 +106,7 @@ public:
void releaseDC(HDC) const;
static QList<QPrinter::PaperSize> supportedPaperSizes(const QPrinterInfo &printerInfo);
+ static QList<QPair<QString, QSizeF> > supportedSizesWithNames(const QPrinterInfo &printerInfo);
static void queryDefaultPrinter(QString &name, QString &program, QString &port);
private:
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
@@ -1023,6 +1023,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.
The page order can be QPrinter::FirstPageFirst or
@@ -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 23ccb0c2d0..2528157532 100644
--- a/src/printsupport/kernel/qprinter.h
+++ b/src/printsupport/kernel/qprinter.h
@@ -47,8 +47,6 @@
#include <QtGui/qpagedpaintdevice.h>
#include <QtPrintSupport/qtprintsupportglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -169,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;
@@ -267,6 +268,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPRINTER_H
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<QPrinter::PaperSize> 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<QPair<QString, QSizeF> > 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> QPrinterInfo::availablePrinters()
{
QPlatformPrinterSupport *ps = QPlatformPrinterSupportPlugin::get();
diff --git a/src/printsupport/kernel/qprinterinfo.h b/src/printsupport/kernel/qprinterinfo.h
index 528423a635..0dc19c1da7 100644
--- a/src/printsupport/kernel/qprinterinfo.h
+++ b/src/printsupport/kernel/qprinterinfo.h
@@ -43,11 +43,9 @@
#define QPRINTERINFO_H
#include <QtCore/QList>
-
+#include <QtCore/QPair>
#include <QtPrintSupport/QPrinter>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -73,6 +71,7 @@ public:
bool isDefault() const;
QList<QPrinter::PaperSize> supportedPaperSizes() const;
+ QList<QPair<QString, QSizeF> > supportedSizesWithNames() const;
static QList<QPrinterInfo> availablePrinters();
static QPrinterInfo defaultPrinter();
@@ -91,6 +90,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPRINTERINFO_H
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<QPrinter::PaperSize> paperSizes;
+ mutable bool hasPaperNames;
+ mutable QList<QPair<QString, QSizeF> > paperNames;
};
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 <QtCore/qglobal.h>
-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/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/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 <qcoreapplication.h>
#include <qdatetime.h>
#include <qsqlfield.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.h b/src/sql/drivers/db2/qsql_db2_p.h
index 4e25c317eb..68563448ed 100644
--- a/src/sql/drivers/db2/qsql_db2.h
+++ b/src/sql/drivers/db2/qsql_db2_p.h
@@ -42,6 +42,19 @@
#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.
+//
+
+#include <QtCore/qglobal.h>
+
#ifdef QT_PLUGIN
#define Q_EXPORT_SQLDRIVER_DB2
#else
@@ -51,15 +64,8 @@
#include <QtSql/qsqlresult.h>
#include <QtSql/qsqldriver.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
-#if 0
-#pragma qt_no_master_include
-#pragma qt_sync_stop_processing
-#endif
-
class QDB2Driver;
class QDB2DriverPrivate;
class QDB2ResultPrivate;
@@ -126,6 +132,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQL_DB2_H
diff --git a/src/sql/drivers/ibase/qsql_ibase.cpp b/src/sql/drivers/ibase/qsql_ibase.cpp
index 5fd07318ec..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 <qcoreapplication.h>
#include <qdatetime.h>
#include <qvariant.h>
@@ -47,6 +47,7 @@
#include <qsqlfield.h>
#include <qsqlindex.h>
#include <qsqlquery.h>
+#include <QtSql/private/qsqlcachedresult_p.h>
#include <qlist.h>
#include <qvector.h>
#include <qtextcodec.h>
@@ -346,6 +347,31 @@ static void qFreeEventBuffer(QIBaseEventBuffer* eBuffer)
delete eBuffer;
}
+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.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.h b/src/sql/drivers/ibase/qsql_ibase_p.h
index 2ce20966c6..b2560ca17c 100644
--- a/src/sql/drivers/ibase/qsql_ibase.h
+++ b/src/sql/drivers/ibase/qsql_ibase_p.h
@@ -42,47 +42,26 @@
#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 <QtSql/qsqlresult.h>
#include <QtSql/qsqldriver.h>
-#include <QtSql/private/qsqlcachedresult_p.h>
#include <ibase.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
-#if 0
-#pragma qt_no_master_include
-#pragma qt_sync_stop_processing
-#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
@@ -132,5 +111,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
#endif // QSQL_IBASE_H
diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp
index b4aa5cd4cc..a529d8c32d 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 <qcoreapplication.h>
#include <qvariant.h>
@@ -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/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.h b/src/sql/drivers/mysql/qsql_mysql_p.h
index 37e18c8fb1..c23bcd92d7 100644
--- a/src/sql/drivers/mysql/qsql_mysql.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 <QtSql/qsqldriver.h>
#include <QtSql/qsqlresult.h>
@@ -57,15 +68,8 @@
#define Q_EXPORT_SQLDRIVER_MYSQL Q_SQL_EXPORT
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
-#if 0
-#pragma qt_no_master_include
-#pragma qt_sync_stop_processing
-#endif
-
class QMYSQLDriverPrivate;
class QMYSQLResultPrivate;
class QMYSQLDriver;
@@ -142,6 +146,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQL_MYSQL_H
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index e2bb9a4eaf..b0950110e0 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 <qcoreapplication.h>
#include <qvariant.h>
@@ -51,6 +51,7 @@
#include <qsqlfield.h>
#include <qsqlindex.h>
#include <qsqlquery.h>
+#include <QtSql/private/qsqlcachedresult_p.h>
#include <qstringlist.h>
#include <qvarlengtharray.h>
#include <qvector.h>
@@ -99,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
@@ -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
{
@@ -2183,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/oci/qsql_oci.pri b/src/sql/drivers/oci/qsql_oci.pri
index 60ccc4c227..66ccdb1abb 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 {
@@ -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/sql/drivers/oci/qsql_oci.h b/src/sql/drivers/oci/qsql_oci_p.h
index 2488e696d2..fecc828434 100644
--- a/src/sql/drivers/oci/qsql_oci.h
+++ b/src/sql/drivers/oci/qsql_oci_p.h
@@ -42,9 +42,19 @@
#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 <QtSql/qsqlresult.h>
#include <QtSql/qsqldriver.h>
-#include <QtSql/private/qsqlcachedresult_p.h>
#ifdef QT_PLUGIN
#define Q_EXPORT_SQLDRIVER_OCI
@@ -52,48 +62,14 @@
#define Q_EXPORT_SQLDRIVER_OCI Q_SQL_EXPORT
#endif
-QT_BEGIN_HEADER
-
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;
-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
{
@@ -131,6 +107,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQL_OCI_H
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index c6fd49d1ea..56c38774ec 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 <qsqlrecord.h>
#if defined (Q_OS_WIN32)
@@ -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();
@@ -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>("SQLHANDLE"), &d->hStmt);
@@ -1797,16 +1829,20 @@ 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: {
- if(d->isMySqlServer)
+ if (d->dbmsType == QODBCDriverPrivate::MySqlServer)
return true;
else
return false;
@@ -1896,13 +1932,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 +2105,7 @@ void QODBCDriverPrivate::checkSchemaUsage()
useSchema = (val != 0);
}
-void QODBCDriverPrivate::checkSqlServer()
+void QODBCDriverPrivate::checkDBMS()
{
SQLRETURN r;
QVarLengthArray<SQLTCHAR> serverString(200);
@@ -2088,8 +2124,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,
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.h b/src/sql/drivers/odbc/qsql_odbc_p.h
index 4fba49b9c5..191f64f072 100644
--- a/src/sql/drivers/odbc/qsql_odbc.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 <QtSql/qsqldriver.h>
#include <QtSql/qsqlresult.h>
@@ -70,15 +81,8 @@
#include <sqlext.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
-#if 0
-#pragma qt_no_master_include
-#pragma qt_sync_stop_processing
-#endif
-
class QODBCPrivate;
class QODBCDriverPrivate;
class QODBCDriver;
@@ -93,6 +97,7 @@ public:
bool prepare(const QString& query);
bool exec();
+ QVariant lastInsertId() const;
QVariant handle() const;
virtual void setForwardOnly(bool forward);
@@ -158,6 +163,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQL_ODBC_H
diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp
index 2bc03715ee..4749b8b97b 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 <qcoreapplication.h>
#include <qvariant.h>
@@ -194,11 +194,12 @@ 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); }
+ void deallocatePreparedStmt();
QPSQLResult *q;
- const QPSQLDriverPrivate *driver;
+ const QPSQLDriverPrivate *privDriver;
PGresult *result;
int currentSize;
bool preparedQueriesEnabled;
@@ -237,7 +238,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;
}
@@ -287,22 +288,22 @@ 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->driver->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->driver->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)
: QSqlResult(db)
{
d = new QPSQLResultPrivate(this);
- d->driver = p;
+ d->privDriver = p;
d->preparedQueriesEnabled = db->hasFeature(QSqlDriver::PreparedQueries);
}
@@ -311,7 +312,7 @@ QPSQLResult::~QPSQLResult()
cleanup();
if (d->preparedQueriesEnabled && !d->preparedStmtId.isNull())
- qDeallocatePreparedStmt(d);
+ d->deallocatePreparedStmt();
delete d;
}
@@ -370,7 +371,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();
@@ -468,7 +469,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();
}
@@ -484,7 +485,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);
@@ -501,7 +507,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)));
@@ -568,16 +574,16 @@ 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));
- 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;
@@ -596,13 +602,13 @@ 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
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();
}
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.h b/src/sql/drivers/psql/qsql_psql_p.h
index 444ef1bccc..6f60a2a34f 100644
--- a/src/sql/drivers/psql/qsql_psql.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 <QtSql/qsqlresult.h>
#include <QtSql/qsqldriver.h>
@@ -51,18 +62,11 @@
#define Q_EXPORT_SQLDRIVER_PSQL Q_SQL_EXPORT
#endif
-QT_BEGIN_HEADER
-
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;
@@ -158,6 +162,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQL_PSQL_H
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp
index 04c88dd188..854705b3f6 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 <qcoreapplication.h>
#include <qvariant.h>
@@ -47,6 +47,7 @@
#include <qsqlfield.h>
#include <qsqlindex.h>
#include <qsqlquery.h>
+#include <QtSql/private/qsqlcachedresult_p.h>
#include <qstringlist.h>
#include <qvector.h>
#include <qdebug.h>
@@ -67,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('"')) ) {
@@ -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.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.h b/src/sql/drivers/sqlite/qsql_sqlite_p.h
index 0fdcd4e240..548d1da97c 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.h
+++ b/src/sql/drivers/sqlite/qsql_sqlite_p.h
@@ -42,9 +42,19 @@
#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 <QtSql/qsqldriver.h>
#include <QtSql/qsqlresult.h>
-#include <QtSql/private/qsqlcachedresult_p.h>
struct sqlite3;
@@ -54,44 +64,11 @@ struct sqlite3;
#define Q_EXPORT_SQLDRIVER_SQLITE Q_SQL_EXPORT
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
-#if 0
-#pragma qt_no_master_include
-#pragma qt_sync_stop_processing
-#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
@@ -125,6 +102,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQL_SQLITE_H
diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
index 02e4004901..1a16b85470 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 <qcoreapplication.h>
#include <qvariant.h>
@@ -50,6 +50,7 @@
#include <qsqlfield.h>
#include <qsqlindex.h>
#include <qsqlquery.h>
+#include <QtSql/private/qsqlcachedresult_p.h>
#include <qstringlist.h>
#include <qvector.h>
@@ -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:
@@ -170,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('\"');
@@ -219,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/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.h b/src/sql/drivers/sqlite2/qsql_sqlite2_p.h
index f141ad1cc2..7a075210ae 100644
--- a/src/sql/drivers/sqlite2/qsql_sqlite2.h
+++ b/src/sql/drivers/sqlite2/qsql_sqlite2_p.h
@@ -42,11 +42,21 @@
#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 <QtSql/qsqldriver.h>
#include <QtSql/qsqlresult.h>
#include <QtSql/qsqlrecord.h>
#include <QtSql/qsqlindex.h>
-#include <QtSql/private/qsqlcachedresult_p.h>
#if defined (Q_OS_WIN32)
# include <QtCore/qt_windows.h>
@@ -54,41 +64,11 @@
struct sqlite;
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
-#if 0
-#pragma qt_no_master_include
-#pragma qt_sync_stop_processing
-#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
@@ -127,6 +107,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQL_SQLITE2_H
diff --git a/src/sql/drivers/tds/qsql_tds.cpp b/src/sql/drivers/tds/qsql_tds.cpp
index 45bba42ca7..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 <qglobal.h>
#ifdef Q_OS_WIN32 // We assume that MS SQL Server is used. Set Q_USE_SYBASE to force Sybase.
@@ -58,6 +58,7 @@
#include <qsqlfield.h>
#include <qsqlindex.h>
#include <qsqlquery.h>
+#include <QtSql/private/qsqlcachedresult_p.h>
#include <qstringlist.h>
#include <qvector.h>
@@ -145,6 +146,33 @@ public:
bool initialized;
};
+struct QTDSColumnData
+{
+ void *data;
+ DBINT nullbind;
+};
+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
{
@@ -156,7 +184,7 @@ public:
void addErrorMsg(QString& errMsg) { errorMsgs.append(errMsg); }
QString getErrorMsgs() { return errorMsgs.join(QLatin1String("\n")); }
void clearErrorMsgs() { errorMsgs.clear(); }
- QVector<void *> buffer;
+ QVector<QTDSColumnData> buffer;
QSqlRecord rec;
private:
@@ -325,8 +353,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 +368,9 @@ QVariant QTDSResult::handle() const
return QVariant(qRegisterMetaType<DBPROCESS *>("DBPROCESS*"), &d->dbproc);
}
-static inline bool qIsNull(const void *ind)
+static inline bool qIsNull(const QTDSColumnData &p)
{
- return *reinterpret_cast<const DBINT *>(&ind) == -1;
+ return p.nullbind == -1;
}
bool QTDSResult::gotoNext(QSqlCachedResult::ValueCache &values, int index)
@@ -364,33 +392,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 +458,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 +498,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)) {
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.h b/src/sql/drivers/tds/qsql_tds_p.h
index 38cb2dc42e..5336f183ef 100644
--- a/src/sql/drivers/tds/qsql_tds.h
+++ b/src/sql/drivers/tds/qsql_tds_p.h
@@ -42,9 +42,19 @@
#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 <QtSql/qsqlresult.h>
#include <QtSql/qsqldriver.h>
-#include <QtSql/private/qsqlcachedresult_p.h>
#ifdef Q_OS_WIN32
#define WIN32_LEAN_AND_MEAN
@@ -67,38 +77,11 @@
#define Q_EXPORT_SQLDRIVER_TDS Q_SQL_EXPORT
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
-#if 0
-#pragma qt_no_master_include
-#pragma qt_sync_stop_processing
-#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
@@ -137,6 +120,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 <QtCore/qglobal.h>
-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.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/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 <QtCore/qstring.h>
#include <QtSql/qsql.h>
-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 <QtCore/qstringlist.h>
#include <QtSql/qsql.h>
-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 <QtCore/qfactoryinterface.h>
#include <QtSql/qsql.h>
-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.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 beab5f27ba..39c4cda958 100644
--- a/src/sql/kernel/qsqlerror.h
+++ b/src/sql/kernel/qsqlerror.h
@@ -45,8 +45,6 @@
#include <QtCore/qstring.h>
#include <QtSql/qsql.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -71,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;
@@ -94,6 +95,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 <QtCore/qstring.h>
#include <QtSql/qsql.h>
-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 <QtCore/qstring.h>
#include <QtCore/qlist.h>
-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.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/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 <QtSql/qsqldatabase.h>
#include <QtCore/qstring.h>
-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 <QtCore/qstring.h>
#include <QtSql/qsql.h>
-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.cpp b/src/sql/kernel/qsqlresult.cpp
index ea972abf50..db55ad7813 100644
--- a/src/sql/kernel/qsqlresult.cpp
+++ b/src/sql/kernel/qsqlresult.cpp
@@ -218,11 +218,24 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query)
QSqlResult::QSqlResult(const QSqlDriver *db)
{
- d = new QSqlResultPrivate(this);
+ d_ptr = new QSqlResultPrivate;
+ Q_D(QSqlResult);
+ d->q_ptr = this;
d->sqldriver = const_cast<QSqlDriver *>(db);
- if(db) {
- setNumericalPrecisionPolicy(db->numericalPrecisionPolicy());
- }
+ if (d->sqldriver)
+ setNumericalPrecisionPolicy(d->sqldriver->numericalPrecisionPolicy());
+}
+
+/*! \internal
+*/
+QSqlResult::QSqlResult(QSqlResultPrivate &dd, const QSqlDriver *db)
+{
+ d_ptr = &dd;
+ Q_D(QSqlResult);
+ d->q_ptr = this;
+ d->sqldriver = const_cast<QSqlDriver *>(db);
+ if (d->sqldriver)
+ setNumericalPrecisionPolicy(d->sqldriver->numericalPrecisionPolicy());
}
/*!
@@ -231,6 +244,7 @@ QSqlResult::QSqlResult(const QSqlDriver *db)
QSqlResult::~QSqlResult()
{
+ Q_D(QSqlResult);
delete d;
}
@@ -243,6 +257,7 @@ QSqlResult::~QSqlResult()
void QSqlResult::setQuery(const QString& query)
{
+ Q_D(QSqlResult);
d->sql = query;
}
@@ -255,6 +270,7 @@ void QSqlResult::setQuery(const QString& query)
QString QSqlResult::lastQuery() const
{
+ Q_D(const QSqlResult);
return d->sql;
}
@@ -267,6 +283,7 @@ QString QSqlResult::lastQuery() const
*/
int QSqlResult::at() const
{
+ Q_D(const QSqlResult);
return d->idx;
}
@@ -281,6 +298,7 @@ int QSqlResult::at() const
bool QSqlResult::isValid() const
{
+ Q_D(const QSqlResult);
return d->idx != QSql::BeforeFirstRow && d->idx != QSql::AfterLastRow;
}
@@ -298,6 +316,7 @@ bool QSqlResult::isValid() const
bool QSqlResult::isActive() const
{
+ Q_D(const QSqlResult);
return d->active;
}
@@ -310,6 +329,7 @@ bool QSqlResult::isActive() const
void QSqlResult::setAt(int index)
{
+ Q_D(QSqlResult);
d->idx = index;
}
@@ -325,6 +345,7 @@ void QSqlResult::setAt(int index)
void QSqlResult::setSelect(bool select)
{
+ Q_D(QSqlResult);
d->isSel = select;
}
@@ -337,6 +358,7 @@ void QSqlResult::setSelect(bool select)
bool QSqlResult::isSelect() const
{
+ Q_D(const QSqlResult);
return d->isSel;
}
@@ -347,6 +369,7 @@ bool QSqlResult::isSelect() const
const QSqlDriver *QSqlResult::driver() const
{
+ Q_D(const QSqlResult);
return d->sqldriver;
}
@@ -360,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;
@@ -375,6 +399,7 @@ void QSqlResult::setActive(bool active)
void QSqlResult::setLastError(const QSqlError &error)
{
+ Q_D(QSqlResult);
d->error = error;
}
@@ -385,6 +410,7 @@ void QSqlResult::setLastError(const QSqlError &error)
QSqlError QSqlResult::lastError() const
{
+ Q_D(const QSqlResult);
return d->error;
}
@@ -519,6 +545,7 @@ bool QSqlResult::fetchPrevious()
*/
bool QSqlResult::isForwardOnly() const
{
+ Q_D(const QSqlResult);
return d->forwardOnly;
}
@@ -540,6 +567,7 @@ bool QSqlResult::isForwardOnly() const
*/
void QSqlResult::setForwardOnly(bool forward)
{
+ Q_D(QSqlResult);
d->forwardOnly = forward;
}
@@ -554,6 +582,7 @@ void QSqlResult::setForwardOnly(bool forward)
*/
bool QSqlResult::savePrepare(const QString& query)
{
+ Q_D(QSqlResult);
if (!driver())
return false;
d->clear();
@@ -579,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
@@ -595,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();
@@ -647,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)
@@ -675,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
@@ -696,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;
@@ -709,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);
}
@@ -722,6 +757,7 @@ QVariant QSqlResult::boundValue(int index) const
*/
QVariant QSqlResult::boundValue(const QString& placeholder) const
{
+ Q_D(const QSqlResult);
QList<int> indexes = d->indexes.value(placeholder);
return d->values.value(indexes.value(0,-1));
}
@@ -733,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);
}
@@ -744,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);
}
@@ -754,6 +792,7 @@ QSql::ParamType QSqlResult::bindValueType(const QString& placeholder) const
*/
int QSqlResult::boundValueCount() const
{
+ Q_D(const QSqlResult);
return d->values.count();
}
@@ -765,7 +804,8 @@ int QSqlResult::boundValueCount() const
*/
QVector<QVariant>& QSqlResult::boundValues() const
{
- return d->values;
+ Q_D(const QSqlResult);
+ return const_cast<QSqlResultPrivate *>(d)->values;
}
/*!
@@ -773,6 +813,7 @@ QVector<QVariant>& QSqlResult::boundValues() const
*/
QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const
{
+ Q_D(const QSqlResult);
return d->binds;
}
@@ -782,6 +823,7 @@ QSqlResult::BindingSyntax QSqlResult::bindingSyntax() const
*/
void QSqlResult::clear()
{
+ Q_D(QSqlResult);
d->clear();
}
@@ -795,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();
}
@@ -811,6 +855,7 @@ void QSqlResult::resetBindCount()
*/
QString QSqlResult::boundValueName(int index) const
{
+ Q_D(const QSqlResult);
return d->holderAt(index);
}
@@ -822,6 +867,7 @@ QString QSqlResult::boundValueName(int index) const
*/
bool QSqlResult::hasOutValues() const
{
+ Q_D(const QSqlResult);
if (d->types.isEmpty())
return false;
QHash<int, QSql::ParamType>::ConstIterator it;
@@ -901,6 +947,7 @@ void QSqlResult::virtual_hook(int, void *)
bool QSqlResult::execBatch(bool arrayBind)
{
Q_UNUSED(arrayBind);
+ Q_D(QSqlResult);
QVector<QVariant> values = d->values;
if (values.count() == 0)
@@ -924,6 +971,7 @@ void QSqlResult::detachFromResultSet()
*/
void QSqlResult::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy)
{
+ Q_D(QSqlResult);
d->precisionPolicy = policy;
}
@@ -931,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 134b96e81d..05f3d7ffec 100644
--- a/src/sql/kernel/qsqlresult.h
+++ b/src/sql/kernel/qsqlresult.h
@@ -46,8 +46,6 @@
#include <QtCore/qvector.h>
#include <QtSql/qsql.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -61,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();
@@ -76,6 +74,7 @@ protected:
};
explicit QSqlResult(const QSqlDriver * db);
+ QSqlResult(QSqlResultPrivate &dd, const QSqlDriver *db);
int at() const;
QString lastQuery() const;
QSqlError lastError() const;
@@ -134,8 +133,7 @@ protected:
virtual bool nextResult();
void resetBindCount(); // HACK
-private:
- QSqlResultPrivate* d;
+ QSqlResultPrivate *d_ptr;
private:
Q_DISABLE_COPY(QSqlResult)
@@ -143,6 +141,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQLRESULT_H
diff --git a/src/sql/kernel/qsqlresult_p.h b/src/sql/kernel/qsqlresult_p.h
index 246b914ec7..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(QSqlResult *d)
- : q(d),
+ QSqlResultPrivate()
+ : q_ptr(0),
idx(QSql::BeforeFirstRow),
active(false),
isSel(false),
@@ -81,6 +82,7 @@ public:
bindCount(0),
binds(QSqlResult::PositionalBinding)
{ }
+ virtual ~QSqlResultPrivate() { }
void clearValues()
{
@@ -116,7 +118,7 @@ public:
QString namedToPositionalBinding(const QString &query);
QString holderAt(int index) const;
- QSqlResult *q;
+ QSqlResult *q_ptr;
QPointer<QSqlDriver> sqldriver;
int idx;
QString sql;
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 <QtCore/qabstractitemmodel.h>
#include <QtSql/qsqldatabase.h>
-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/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/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 <QtWidgets/qcombobox.h>
#include <QtSql/qsqlrelationaltablemodel.h>
-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.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/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 <QtSql/qsqltablemodel.h>
-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 <QtSql/qsqldatabase.h>
#include <QtSql/qsqlquerymodel.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -140,6 +138,4 @@ protected:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QSQLTABLEMODEL_H
diff --git a/src/src.pro b/src/src.pro
index 525c9c8855..f775736406 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -1,7 +1,38 @@
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
+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
+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
+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
+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
@@ -9,7 +40,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,27 +79,37 @@ 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
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
+src_printsupport.depends = src_corelib src_gui src_widgets src_tools_uic
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
+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
+ 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
}
contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent
!contains(QT_CONFIG, no-gui) {
@@ -77,9 +118,10 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent
src_gui.depends += src_angle
}
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_widgets
+ SUBDIRS += src_tools_uic src_widgets
src_plugins.depends += src_widgets
contains(QT_CONFIG, opengl(es1|es2)?) {
SUBDIRS += src_opengl
@@ -91,6 +133,8 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent
}
}
}
-SUBDIRS += src_plugins
+SUBDIRS += src_plugins src_tools_qdoc
nacl: SUBDIRS -= src_network src_testlib
+
+android:!android-no-sdk: SUBDIRS += src_android
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 <tglx@linutronix.de>
+ * 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 <linux/types.h>
+#include <linux/ioctl.h>
+#include <asm/byteorder.h>
+
+/*
+ * 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 */
diff --git a/src/testlib/doc/src/qttestlib-manual.qdoc b/src/testlib/doc/src/qttestlib-manual.qdoc
index 70bc6112c0..c44bb49ae3 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
@@ -262,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/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<unsigned char *>(str);
while (*idx) {
- if (((*idx < 0x20 && *idx != '\n' && *idx != '\t') || *idx > 0x7e))
+ if (((*idx < 0x20 && *idx != '\n' && *idx != '\t') || *idx == 0x7f))
*idx = '?';
++idx;
}
diff --git a/src/testlib/qbenchmark.cpp b/src/testlib/qbenchmark.cpp
index 796d817ae2..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_);
@@ -87,6 +88,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.h b/src/testlib/qbenchmark.h
index f166955249..ea5023c095 100644
--- a/src/testlib/qbenchmark.h
+++ b/src/testlib/qbenchmark.h
@@ -45,8 +45,6 @@
#include <QtTest/qtest_global.h>
#include <QtTest/qbenchmarkmetric.h>
-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/qbenchmark_p.h b/src/testlib/qbenchmark_p.h
index 6b5d996966..351287b103 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) && !defined(Q_OS_ANDROID)
+#define QTESTLIB_USE_PERF_EVENTS
+#else
+#undef QTESTLIB_USE_PERF_EVENTS
+#endif
+
#include <QtTest/private/qbenchmarkmeasurement_p.h>
#include <QtCore/QMap>
#include <QtTest/qtest_global.h>
#ifdef QTESTLIB_USE_VALGRIND
#include <QtTest/private/qbenchmarkvalgrind_p.h>
#endif
+#ifdef QTESTLIB_USE_PERF_EVENTS
+#include <QtTest/private/qbenchmarkperfevents_p.h>
+#endif
#include <QtTest/private/qbenchmarkevent_p.h>
#include <QtTest/private/qbenchmarkmetric_p.h>
@@ -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();
@@ -151,6 +160,7 @@ public:
bool createChart;
bool verboseOutput;
QString callgrindOutFileBase;
+ int minimumTotal;
private:
Mode mode_;
};
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 9a59156e66..448df3f691 100644
--- a/src/testlib/qbenchmarkmetric.h
+++ b/src/testlib/qbenchmarkmetric.h
@@ -44,8 +44,6 @@
#include <QtTest/qtest_global.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -60,13 +58,32 @@ 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
};
}
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 <QtTest/qtest_global.h>
#include <QtTest/qbenchmarkmetric.h>
-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/qbenchmarkperfevents.cpp b/src/testlib/qbenchmarkperfevents.cpp
new file mode 100644
index 0000000000..e3034d1f94
--- /dev/null
+++ b/src/testlib/qbenchmarkperfevents.cpp
@@ -0,0 +1,607 @@
+/****************************************************************************
+**
+** 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 "qbenchmarkmetric.h"
+#include "qbenchmark_p.h"
+
+#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 <sys/types.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <string.h>
+#include <stdio.h>
+
+#include <sys/syscall.h>
+#include <sys/ioctl.h>
+
+#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 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
+ \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 <http://lxr.linux.no/linux/tools/perf/design.txt>
+ \li sample tool: tools/perf/builtin-stat.c <http://lxr.linux.no/linux/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)
+{
+ 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;
+}
+
+/* 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
+ 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 ===
+#!/usr/bin/env perl
+# Load all entries into %map
+while (<STDIN>) {
+ 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-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"
+ "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"
+ "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"
+ "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_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 -- */
+
+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)
+{
+ 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 = strncmp(name, eventlist_strings + ptr->offset, n);
+ if (c == 0)
+ break;
+ if (c < 0) {
+ fprintf(stderr, "ERROR: Performance counter type '%s' is unknown\n", name);
+ exit(1);
+ }
+ }
+
+ 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()
+{
+ 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");
+ }
+
+ 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()
+ : fd(-1)
+{
+}
+
+QBenchmarkPerfEventsMeasurer::~QBenchmarkPerfEventsMeasurer()
+{
+ qt_safe_close(fd);
+}
+
+void QBenchmarkPerfEventsMeasurer::init()
+{
+}
+
+void QBenchmarkPerfEventsMeasurer::start()
+{
+
+ initPerf();
+ // 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);
+ }
+
+ // 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)
+{
+ return true;
+}
+
+int QBenchmarkPerfEventsMeasurer::adjustIterationCount(int)
+{
+ return 1;
+}
+
+int QBenchmarkPerfEventsMeasurer::adjustMedianCount(int)
+{
+ return 1;
+}
+
+QTest::QBenchmarkMetric QBenchmarkPerfEventsMeasurer::metricType()
+{
+ return metricForEvent(attr.type, attr.config);
+}
+
+static quint64 rawReadValue(int fd)
+{
+ /* 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<char *>(&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));
+}
+
+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
new file mode 100644
index 0000000000..f73d140300
--- /dev/null
+++ b/src/testlib/qbenchmarkperfevents_p.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** 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 <QtTest/private/qbenchmarkmeasurement_p.h>
+
+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();
+ static QTest::QBenchmarkMetric metricForEvent(quint32 type, quint64 event_id);
+ static void setCounter(const char *name);
+ static void listCounters();
+private:
+ int fd;
+
+ qint64 readValue();
+};
+
+QT_END_NAMESPACE
+
+#endif // QBENCHMARKPERFEVENTS_P_H
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);
diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h
index 0323fa111f..72a5df1ed9 100644
--- a/src/testlib/qsignalspy.h
+++ b/src/testlib/qsignalspy.h
@@ -50,8 +50,6 @@
#include <QtCore/qvector.h>
#include <QtTest/qtesteventloop.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -97,7 +95,7 @@ public:
return;
}
sig = ba;
- initArgs(mo->method(sigIndex));
+ initArgs(mo->method(sigIndex), obj);
}
inline bool isValid() const { return !sig.isEmpty(); }
@@ -131,10 +129,23 @@ public:
private:
void initArgs(const QMetaMethod &member)
{
+ initArgs(member, 0);
+ }
+
+ void initArgs(const QMetaMethod &member, const QObject *obj)
+ {
const QList<QByteArray> 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<QObject*>(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.",
@@ -172,6 +183,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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/qtest.h b/src/testlib/qtest.h
index 6d130af27c..ac1d6cc9ef 100644
--- a/src/testlib/qtest.h
+++ b/src/testlib/qtest.h
@@ -60,8 +60,6 @@
#include <QtCore/qrect.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -70,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)
@@ -87,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<int>(c.unicode()), 16)).toLatin1().constData());
+ return qstrdup(qPrintable(QString::fromLatin1("QChar: '%1' (0x%2)").arg(c).arg(QString::number(static_cast<int>(c.unicode()), 16))));
}
template<> inline char *toString(const QPoint &p)
@@ -145,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());
}
@@ -161,7 +159,7 @@ template<> inline char *toString(const QVariant &v)
if (!v.isNull()) {
vstring.append(',');
if (v.canConvert(QVariant::String)) {
- vstring.append(qvariant_cast<QString>(v).toLatin1());
+ vstring.append(qvariant_cast<QString>(v).toLocal8Bit());
}
else {
vstring.append("<value not representable as string>");
@@ -186,9 +184,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 <typename T>
+inline bool qCompare(QList<T> const &t1, QList<T> const &t2, const char *actual, const char *expected,
+ const char *file, int line)
{
char msg[1024];
msg[0] = '\0';
@@ -196,23 +194,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<QString>(t1, t2, actual, expected, file, line);
+}
+
template <typename T>
inline bool qCompare(QFlags<T> const &t1, T const &t2, const char *actual, const char *expected,
const char *file, int line)
@@ -227,6 +232,48 @@ inline bool qCompare(QFlags<T> 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<qint64>(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<qint64>(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<quint64>(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<qint64>(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<qint64>(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<quint64>(t1), t2, actual, expected, file, line);
+}
+
}
QT_END_NAMESPACE
@@ -294,6 +341,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 <QtCore/qglobal.h>
-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..f27651c3ad 100644
--- a/src/testlib/qtestaccessible.h
+++ b/src/testlib/qtestaccessible.h
@@ -47,6 +47,8 @@
#pragma qt_no_master_include
#endif
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_ACCESSIBILITY
#define QVERIFY_EVENT(event) \
@@ -59,8 +61,6 @@
#include <QtTest/qtest_global.h>
#include <QtTest/qtestsystem.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -266,7 +266,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 <QtCore/qglobal.h>
-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.cpp b/src/testlib/qtestcase.cpp
index 987c5d88b2..27fcc64ceb 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -64,6 +64,8 @@
#include <QtTest/private/qbenchmark_p.h>
#include <QtTest/private/cycle_p.h>
+#include <numeric>
+
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@@ -82,7 +84,7 @@
#include <time.h>
#endif
-#ifdef Q_OS_MAC
+#if defined(Q_OS_MAC) && !defined(Q_OS_IOS)
#include <IOKit/pwr_mgt/IOPMLib.h>
#endif
@@ -1341,11 +1343,17 @@ 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"
+ " -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"
#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";
@@ -1481,6 +1489,25 @@ 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()) {
+ // perf available
+ QBenchmarkGlobalData::current->setMode(QBenchmarkGlobalData::PerfCounter);
+ } 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) {
QBenchmarkGlobalData::current->setMode(QBenchmarkGlobalData::TickCounter);
@@ -1494,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");
@@ -1623,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*/
@@ -1631,6 +1674,7 @@ static void qInvokeTestMethodDataEntry(char *slot)
int i = (QBenchmarkGlobalData::current->measurer->needsWarmupIteration()) ? -1 : 0;
QList<QBenchmarkResult> results;
+ bool minimumTotalReached = false;
do {
QBenchmarkTestMethodData::current->beginDataRun();
@@ -1689,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.
@@ -2078,7 +2130,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 +2145,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 +2198,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 +2215,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);
}
@@ -2684,6 +2736,10 @@ bool QTest::compare_string_helper(const char *t1, const char *t2, const char *ac
\internal
*/
+/*! \fn bool QTest::qCompare(QList<T> const &t1, QList<T> const &t2, const char *actual, const char *expected, const char *file, int line)
+ \internal
+*/
+
/*! \fn bool QTest::qCompare(QFlags<T> const &t1, T const &t2, const char *actual, const char *expected, const char *file, int line)
\internal
*/
@@ -2692,6 +2748,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
*/
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 <string.h>
-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 <QtTest/private/qtestcorelist_p.h>
#include <QtTest/private/qtestelementattribute_p.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -174,6 +172,4 @@ const QTestElementAttribute *QTestCoreElement<ElementType>::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 <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -141,6 +139,4 @@ int QTestCoreList<T>::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 <QtCore/qmetatype.h>
#include <QtCore/qstring.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -99,6 +97,4 @@ inline QTestData &operator<<(QTestData &data, const QStringBuilder<A, B> &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 <QtTest/private/qtestcoreelement_p.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -80,6 +78,4 @@ class QTestElement: public QTestCoreElement<QTestElement>
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 <QtTest/private/qtestcorelist_p.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -116,6 +114,4 @@ class QTestElementAttribute: public QTestCoreList<QTestElementAttribute>
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 <stdlib.h>
-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/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/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 <QtCore/qobject.h>
#include <QtCore/qpointer.h>
-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 <QtWidgets/qapplication.h>
#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 c24b09b14c..ea57ac5b8c 100644
--- a/src/testlib/qtestmouse.h
+++ b/src/testlib/qtestmouse.h
@@ -54,14 +54,13 @@
#include <QtCore/qpoint.h>
#include <QtCore/qstring.h>
#include <QtGui/qevent.h>
+#include <QtGui/qwindow.h>
#ifdef QT_WIDGETS_LIB
#include <QtWidgets/qapplication.h>
#include <QtWidgets/qwidget.h>
#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);
@@ -227,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..e299981670 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
@@ -73,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() {}
@@ -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 <QtWidgets/QWidget>
#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 a291507142..9a661b4ecd 100644
--- a/src/testlib/qtesttouch.h
+++ b/src/testlib/qtesttouch.h
@@ -53,12 +53,11 @@
#include <QtTest/qtestspontaneevent.h>
#include <QtCore/qmap.h>
#include <QtGui/qevent.h>
+#include <QtGui/qwindow.h>
#ifdef QT_WIDGETS_LIB
#include <QtWidgets/qwidget.h>
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT void qt_handleTouchEvent(QWindow *w, QTouchDevice *device,
@@ -233,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 <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -90,6 +88,4 @@ class QTestXunitStreamer
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/src/testlib/testlib.pro b/src/testlib/testlib.pro
index 6b74f23454..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 \
@@ -74,9 +76,3 @@ mac {
}
load(qt_module)
-
-QMAKE_TARGET_PRODUCT = QTestLib
-QMAKE_TARGET_DESCRIPTION = Qt \
- Unit \
- Testing \
- Library
diff --git a/src/tools/bootstrap-dbus/bootstrap-dbus.pro b/src/tools/bootstrap-dbus/bootstrap-dbus.pro
new file mode 100644
index 0000000000..6af70efda7
--- /dev/null
+++ b/src/tools/bootstrap-dbus/bootstrap-dbus.pro
@@ -0,0 +1,32 @@
+option(host_build)
+
+MODULE = bootstrap_dbus
+TARGET = QtBootstrapDBus
+CONFIG += no_module_headers internal_module force_bootstrap
+
+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/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index 0d4b62fd16..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 += no_module_headers 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
@@ -37,6 +36,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
@@ -66,6 +72,8 @@ 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 \
../../corelib/kernel/qvariant.cpp \
@@ -111,14 +119,27 @@ 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 \
-macx: {
- SOURCES += ../../corelib/io/qfilesystemengine_mac.cpp \
- ../../corelib/io/qsettings_mac.cpp \
+mac {
+ SOURCES += ../../corelib/io/qsettings_mac.cpp \
+ ../../corelib/kernel/qcoreapplication_mac.cpp \
../../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)
@@ -128,19 +149,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")
-}
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp
index ef3b381842..e6ffbe157a 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 <ogoffart@woboq.com>
** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
@@ -522,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");
@@ -719,7 +715,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;
@@ -846,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());
}
@@ -893,12 +886,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();
- if (!p.read.isEmpty())
+ needGet |= !p.read.isEmpty() || !p.member.isEmpty();
+ if (!p.read.isEmpty() || !p.member.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 +910,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 +926,12 @@ void Generator::generateMetacall()
else if (cdef->enumDeclarations.value(p.type, false))
fprintf(out, " case %d: *reinterpret_cast<int*>(_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 +948,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 +960,25 @@ void Generator::generateMetacall()
if (cdef->enumDeclarations.value(p.type, false)) {
fprintf(out, " case %d: %s%s(QFlag(*reinterpret_cast<int*>(_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/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/moc.cpp b/src/tools/moc/moc.cpp
index f49cc23ce5..1ebb82ffad 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 5b3c364a73..f97a537215 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;
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/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..0dfd0999f4 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 == '$'
);
}
@@ -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/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 <stdlib.h>
#include <string.h>
-#include "qdbusconnection.h" // for the Export* flags
-#include "qdbusconnection_p.h" // for the qDBusCheckAsyncTag
+#include <qdbusconnection.h> // for the Export* flags
+#include <private/qdbusconnection_p.h> // 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 <qdbusmetatype.h>
+#include <private/qdbusmetatype_p.h>
+#include <private/qdbusutil_p.h>
#include "moc.h"
#include "generator.h"
diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro
index 02c3655f33..655158e457 100644
--- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro
+++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.pro
@@ -1,26 +1,12 @@
option(host_build)
-
-include(../moc/moc.pri)
-
+QT = core-private
+force_bootstrap: QT += bootstrap_dbus-private
+else: QT += 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 \
- $$QT_SOURCE_TREE/src/dbus
-
-!isEmpty(DBUS_PATH): INCLUDEPATH += $$DBUS_PATH/include
-
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.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 <qtextstream.h>
#include <qset.h>
-#include "qdbusmetatype.h"
-#include <qdbusintrospection_p.h>
+#include <qdbusmetatype.h>
+#include <private/qdbusintrospection_p.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro
index b473014938..dcc36c7913 100644
--- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro
+++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.pro
@@ -1,26 +1,10 @@
option(host_build)
-
+QT = core-private
+force_bootstrap: QT += bootstrap_dbus-private
+else: QT += 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 \
- $$QT_SOURCE_TREE/src/dbus
-
-!isEmpty(DBUS_PATH): INCLUDEPATH += $$DBUS_PATH/include
-
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)
diff --git a/src/tools/qdoc/qdoc.pro b/src/tools/qdoc/qdoc.pro
index 9df79ec718..7664fa4f4d 100644
--- a/src/tools/qdoc/qdoc.pro
+++ b/src/tools/qdoc/qdoc.pro
@@ -1,6 +1,8 @@
option(host_build)
+CONFIG += force_bootstrap # because of weird QLibraryInfo::location() reference
-DEFINES += QDOC2_COMPAT
+DEFINES += QDOC2_COMPAT \
+ QT_CRYPTOGRAPHICHASH_ONLY_SHA1
INCLUDEPATH += $$QT_SOURCE_TREE/src/tools/qdoc \
$$QT_SOURCE_TREE/src/tools/qdoc/qmlparser
@@ -69,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/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 )
{
}
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/qmlparser.pri b/src/tools/qdoc/qmlparser/parser.pri
index 6be85ba85a..e5b8ae2749 100644
--- a/src/tools/qdoc/qmlparser/qmlparser.pri
+++ b/src/tools/qdoc/qmlparser/parser.pri
@@ -8,7 +8,7 @@ HEADERS += \
$$PWD/qqmljsmemorypool_p.h \
$$PWD/qqmljsparser_p.h \
$$PWD/qqmljsglobal_p.h \
- $$PWD/qqmljskeywords_p.h
+ $$PWD/qqmljskeywords_p.h \
SOURCES += \
$$PWD/qqmljsast.cpp \
@@ -16,4 +16,7 @@ SOURCES += \
$$PWD/qqmljsengine_p.cpp \
$$PWD/qqmljsgrammar.cpp \
$$PWD/qqmljslexer.cpp \
- $$PWD/qqmljsparser.cpp
+ $$PWD/qqmljsparser.cpp \
+
+OTHER_FILES += \
+ $$PWD/qqmljs.g
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 <qdebug.h>
-#include <qcoreapplication.h>
-
-#include <string.h>
-
#include "qqmljsengine_p.h"
#include "qqmljslexer_p.h"
#include "qqmljsast_p.h"
#include "qqmljsmemorypool_p.h"
+#include <QtCore/qdebug.h>
+#include <QtCore/qcoreapplication.h>
+
+#include <string.h>
+
./
/:/****************************************************************************
@@ -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 <qlist.h>
-#include <qstring.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qstring.h>
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 <qvarlengtharray.h>
+#include <QtCore/qvarlengtharray.h>
+
+//
+// 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 <qstring.h>
+#include <QtCore/qstring.h>
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 <qglobal.h>
+#include <QtCore/qglobal.h>
//
// 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 <qnumeric.h>
-#include <qhash.h>
-#include <qdebug.h>
+#include <QtCore/qnumeric.h>
+#include <QtCore/qhash.h>
+#include <QtCore/qdebug.h>
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 <qstring.h>
-#include <qset.h>
+#include <QtCore/qstring.h>
+#include <QtCore/qset.h>
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 <qcoreapplication.h>
-#define tr(x, y) QCoreApplication::translate(x, y)
-#endif
-#include <qvarlengtharray.h>
-#include <qdebug.h>
+#include <QtCore/qcoreapplication.h>
+#include <QtCore/qvarlengtharray.h>
+#include <QtCore/qdebug.h>
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<char,32> chars;
- chars.append(ch.unicode());
+ QVarLengthArray<char,32> 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 <qstring.h>
+
+#include <QtCore/qstring.h>
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 <QtCore/qdebug.h>
#include <cstring>
-#include <stdlib.h>
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 <qdebug.h>
-
-#include <string.h>
-
#include "qqmljsengine_p.h"
#include "qqmljslexer_p.h"
#include "qqmljsast_p.h"
#include "qqmljsmemorypool_p.h"
+#include <QtCore/qdebug.h>
+#include <QtCore/qcoreapplication.h>
+
+#include <string.h>
#include "qqmljsparser_p.h"
-#include <qvarlengtharray.h>
+#include <QtCore/qvarlengtharray.h>
+
+//
+// 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<AST::ArrayMemberExpression *>(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 <qlist.h>
-#include <qstring.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qstring.h>
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
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/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
diff --git a/src/tools/tools.pro b/src/tools/tools.pro
deleted file mode 100644
index fa9ed54c50..0000000000
--- a/src/tools/tools.pro
+++ /dev/null
@@ -1,43 +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
-
-# 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
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/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<QString, DomCustomWidget*> NameCustomWidgetMap;
NameCustomWidgetMap m_customWidgets;
- bool m_scriptsActivated;
};
QT_END_NAMESPACE
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/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)
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 bed0480059..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
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "qaccessiblewidget.h"
+#include "qaccessiblewidget_p.h"
#ifndef QT_NO_ACCESSIBILITY
@@ -64,7 +64,7 @@ static QList<QWidget*> childWidgets(const QWidget *widget)
QList<QWidget*> widgets;
for (int i = 0; i < list.size(); ++i) {
QWidget *w = qobject_cast<QWidget *>(list.at(i));
- if (w && !w->isWindow()
+ if (w && !w->isWindow()
&& !qobject_cast<QFocusFrame*>(w)
#if !defined(QT_NO_MENU)
&& !qobject_cast<QMenu*>(w)
@@ -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<QWidget *>(child->object()));
}
diff --git a/src/widgets/accessible/qaccessiblewidget.h b/src/widgets/accessible/qaccessiblewidget_p.h
index 5e43f201cb..803dc71409 100644
--- a/src/widgets/accessible/qaccessiblewidget.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
@@ -43,8 +43,7 @@
#define QACCESSIBLEWIDGET_H
#include <QtGui/qaccessibleobject.h>
-
-QT_BEGIN_HEADER
+#include <QtGui/private/qaccessible2_p.h>
QT_BEGIN_NAMESPACE
@@ -99,6 +98,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QACCESSIBLEWIDGET_H
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp
index af43ecc8df..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
@@ -1857,15 +1857,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
diff --git a/src/widgets/dialogs/qcolordialog.h b/src/widgets/dialogs/qcolordialog.h
index 2149c9c6d2..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qdialog.h>
-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/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 eeb0ac56b5..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/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 4bba3131c9..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qdialog.h>
-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.cpp b/src/widgets/dialogs/qfiledialog.cpp
index c60f2476c3..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
@@ -941,7 +941,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];
diff --git a/src/widgets/dialogs/qfiledialog.h b/src/widgets/dialogs/qfiledialog.h
index 18aaa781fd..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
@@ -46,8 +46,6 @@
#include <QtCore/qstring.h>
#include <QtWidgets/qdialog.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -265,6 +263,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QFileDialog::Options)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QFILEDIALOG_H
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 ffaa2bc6f8..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
@@ -53,6 +53,8 @@
// We mean it.
//
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_FILEDIALOG
#include "qfiledialog.h"
diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp
index 98cde84450..213aefe5f5 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 9a81e0f02f..d91ac424e2 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
@@ -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/dialogs/qfilesystemmodel.h b/src/widgets/dialogs/qfilesystemmodel.h
index 18df89d736..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
@@ -48,8 +48,6 @@
#include <QtGui/qicon.h>
#include <QtCore/qdiriterator.h>
-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/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 51d68d1b88..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
@@ -46,8 +46,6 @@
#include <QtWidgets/qdialog.h>
#include <QtGui/qfont.h>
-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/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 096a81d4bc..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
@@ -46,8 +46,6 @@
#include <QtCore/qstring.h>
#include <QtWidgets/qlineedit.h>
-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.cpp b/src/widgets/dialogs/qmessagebox.cpp
index 57ed4da8a6..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
@@ -1225,6 +1225,30 @@ void QMessageBox::setTextFormat(Qt::TextFormat format)
}
/*!
+ \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
*/
bool QMessageBox::event(QEvent *e)
diff --git a/src/widgets/dialogs/qmessagebox.h b/src/widgets/dialogs/qmessagebox.h
index e0eb47ea2a..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qdialog.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -69,6 +67,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 +185,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);
@@ -329,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.cpp b/src/widgets/dialogs/qprogressdialog.cpp
index de86e2ed7c..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
@@ -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/qprogressdialog.h b/src/widgets/dialogs/qprogressdialog.h
index 1f17727900..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qdialog.h>
-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/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 8bc2eb92c1..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
@@ -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,33 +1515,48 @@ 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();
q->removeEventFilter(vistaHelper);
+ bool vistaMargins = false;
+
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(
0, vistaHelper->topOffset() // ### should ideally work without the '+ 1'
- qMin(vistaHelper->topOffset(), vistaHelper->topPadding() + 1));
+ vistaMargins = true;
+ vistaHelper->backButton()->show();
} 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();
@@ -1551,15 +1567,16 @@ void QWizardPrivate::handleAeroStyleChange()
#endif
antiFlickerWidget->move(0, 0);
vistaHelper->hideBackButton();
- vistaHelper->setTitleBarIconAndCaptionVisible(true);
+ if (isWindow)
+ vistaHelper->setTitleBarIconAndCaptionVisible(true);
}
_q_updateButtonStates();
- if (q->isVisible())
- vistaHelper->setWindowPosHack();
+ vistaHelper->updateCustomMargins(vistaMargins);
inHandleAeroStyleChange = false;
+ return true;
}
#endif
@@ -2507,8 +2524,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.h b/src/widgets/dialogs/qwizard.h
index 7a95492f94..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qdialog.h>
-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/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp
index 2bcb7a2167..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
@@ -49,7 +49,10 @@
#include "qwizard.h"
#include "qpaintengine.h"
#include "qapplication.h"
+#include <QtCore/QVariant>
+#include <QtCore/QDebug>
#include <QtGui/QMouseEvent>
+#include <QtGui/QWindow>
#include <QtWidgets/QDesktopWidget>
// Note, these tests are duplicates in qwindowsxpstyle_p.h.
@@ -66,10 +69,12 @@
#include <uxtheme.h>
+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
@@ -216,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;
@@ -233,8 +240,6 @@ void QVistaBackButton::paintEvent(QPaintEvent *)
else if (underMouse())
state = WIZ_NAV_BB_HOT;
- QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
- HDC hdc = static_cast<HDC>(nativeInterface->nativeResourceForBackingStore("getDC", backingStore()));
pDrawThemeBackground(theme, hdc, WIZ_NAV_BACKBUTTON, state, &clipRect, &clipRect);
}
@@ -251,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);
@@ -265,6 +272,26 @@ QVistaHelper::~QVistaHelper()
--instanceCount;
}
+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 = vistaMargins ?
+ 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;
@@ -291,6 +318,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;
@@ -315,9 +348,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;
}
@@ -327,11 +360,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<HDC>(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();
@@ -352,14 +385,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);
@@ -375,8 +414,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));
}
}
@@ -402,13 +441,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 +481,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 +489,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;
}
@@ -598,8 +594,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;
@@ -613,8 +608,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;
@@ -629,8 +623,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;
@@ -657,6 +650,31 @@ 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<HDC>(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.
+ // 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<HWND>(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;
@@ -677,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);
@@ -693,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);
@@ -725,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);
@@ -789,6 +807,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 cd0b2da38e..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
@@ -53,6 +53,8 @@
// We mean it.
//
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_WIZARD
#ifndef QT_NO_STYLE_WINDOWSVISTA
@@ -87,6 +89,7 @@ public:
QVistaHelper(QWizard *wizard);
~QVistaHelper();
enum TitleBarChangeType { NormalTitleBar, ExtendedTitleBar };
+ void updateCustomMargins(bool vistaMargins);
bool setDWMTitleBar(TitleBarChangeType type);
void setTitleBarIconAndCaptionVisible(bool visible);
void mouseEvent(QEvent *event);
@@ -94,9 +97,8 @@ 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(); }
- void setWindowPosHack();
QColor basicWindowFrameColor();
enum VistaState { VistaAero, VistaBasic, Classic, Dirty };
static VistaState vistaState();
@@ -105,12 +107,13 @@ 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();
+
+ static HDC backingStoreDC(const QWidget *wizard, QPoint *offset);
+
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);
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/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 f08f937799..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
@@ -49,8 +49,6 @@
#include <QtGui/qbrush.h>
#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/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 e93c1adc3c..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
@@ -58,8 +58,6 @@
#include <QtWidgets/qgraphicseffect.h>
#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/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 b8aa221630..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
@@ -46,8 +46,6 @@
#include <QtWidgets/qgraphicslayout.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -122,6 +120,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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 d833ea3b33..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qgraphicsitem.h>
#include <QtWidgets/qgraphicslayout.h>
-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.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index 5c9651f1c9..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
@@ -1867,15 +1867,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<QGraphicsWidget *>(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) {
@@ -2259,7 +2290,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()) {
@@ -3156,16 +3187,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);
+ }
}
}
}
diff --git a/src/widgets/graphicsview/qgraphicsitem.h b/src/widgets/graphicsview/qgraphicsitem.h
index 446aea4754..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
@@ -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/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 d87fc8a868..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
@@ -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.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 85668d8deb..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qgraphicslayoutitem.h>
-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/qgraphicslayout_p.cpp b/src/widgets/graphicsview/qgraphicslayout_p.cpp
index 8e3d4a62f8..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
@@ -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/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 b753790121..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
@@ -46,8 +46,6 @@
#include <QtWidgets/qsizepolicy.h>
#include <QtGui/qevent.h>
-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/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 0aabc808a0..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qgraphicsitem.h>
#include <QtWidgets/qgraphicslayout.h>
-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.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 a88899b900..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qgraphicswidget.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -140,7 +138,5 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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 a9c045ea80..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
@@ -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<QGraphicsWidget *>(item);
widget->d_func()->fixFocusChainBeforeReparenting(0, oldScene, 0);
}
@@ -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);
@@ -771,9 +773,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())
- focusItem->setFocus(Qt::ActiveWindowFocusReason);
+ // 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()) {
+ setFocusItemHelper(focusItem, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false);
+ } else if (panel->flags() & QGraphicsItem::ItemIsFocusable) {
+ setFocusItemHelper(panel, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false);
+ } else if (panel->isWidget()) {
+ QGraphicsWidget *fw = static_cast<QGraphicsWidget *>(panel)->d_func()->focusNext;
+ do {
+ if (fw->focusPolicy() & Qt::TabFocus) {
+ setFocusItemHelper(fw, Qt::ActiveWindowFocusReason, /* emitFocusChanged = */ false);
+ break;
+ }
+ fw = fw->d_func()->focusNext;
+ } while (fw != panel);
+ }
} else if (q->isActive()) {
// Activate the scene
QEvent event(QEvent::WindowActivate);
@@ -782,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)
@@ -804,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;
@@ -848,6 +878,9 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
QFocusEvent event(QEvent::FocusIn, focusReason);
sendEvent(item, &event);
}
+
+ if (emitFocusChanged)
+ emit q->focusItemChanged(focusItem, oldFocusItem, focusReason);
}
/*!
@@ -2528,14 +2561,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;
}
}
@@ -5329,8 +5361,23 @@ 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<QGraphicsWidget *>(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 (!d->tabFocusFirst) {
+ if (!item && !d->tabFocusFirst) {
// No widgets...
return false;
}
@@ -5342,8 +5389,10 @@ bool QGraphicsScene::focusNextPrevChild(bool next)
} else {
QGraphicsWidget *test = static_cast<QGraphicsWidget *>(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;
@@ -5407,6 +5456,25 @@ bool QGraphicsScene::focusNextPrevChild(bool next)
*/
/*!
+ \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
Returns the scene's style, or the same as QApplication::style() if the
diff --git a/src/widgets/graphicsview/qgraphicsscene.h b/src/widgets/graphicsview/qgraphicsscene.h
index 802d9c4970..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
@@ -51,8 +51,6 @@
#include <QtGui/qmatrix.h>
#include <QtGui/qpen.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -292,6 +290,7 @@ Q_SIGNALS:
void changed(const QList<QRectF> &region);
void sceneRectChanged(const QRectF &rect);
void selectionChanged();
+ void focusItemChanged(QGraphicsItem *newFocus, QGraphicsItem *oldFocus, Qt::FocusReason reason);
private:
Q_DECLARE_PRIVATE(QGraphicsScene)
@@ -324,6 +323,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsScene::SceneLayers)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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 14cc240fa3..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
@@ -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<QGraphicsWidget *> popupWidgets;
void addPopup(QGraphicsWidget *widget);
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 81a5321e0c..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
@@ -50,8 +50,6 @@
#include <QtCore/qset.h>
#include <QtCore/qhash.h>
-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.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/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 <QtCore/qobject.h>
#include <QtGui/qtransform.h>
-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.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/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 <QtWidgets/qgraphicsitem.h>
#include <private/qgraphicssceneindex_p.h>
-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..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
@@ -48,8 +48,6 @@
#include <QtGui/QMatrix4x4>
#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/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 22ec829507..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
@@ -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"
@@ -706,56 +720,61 @@ 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()
- < 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;
+ if (!rubberBandRect.isNull()) {
+ rubberBandRect = QRect();
+ emit q->rubberBandChanged(rubberBandRect, QPointF(), QPointF());
+ }
+ 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);
+ QRect oldRubberband = rubberBandRect;
- // 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 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)
+ 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
@@ -1502,7 +1521,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
{
@@ -1514,6 +1533,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, rubberBandChanged()
+*/
+
+QRect QGraphicsView::rubberBandRect() const
+{
+ Q_D(const QGraphicsView);
+ if (d->dragMode != QGraphicsView::RubberBandDrag || !d->sceneInteractionAllowed || !d->rubberBanding)
+ return QRect();
+
+ return d->rubberBandRect;
+}
#endif
/*!
@@ -3301,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 488e12511c..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
@@ -47,8 +47,6 @@
#include <QtWidgets/qscrollarea.h>
#include <QtWidgets/qgraphicsscene.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -148,6 +146,7 @@ public:
#ifndef QT_NO_RUBBERBAND
Qt::ItemSelectionMode rubberBandSelectionMode() const;
void setRubberBandSelectionMode(Qt::ItemSelectionMode mode);
+ QRect rubberBandRect() const;
#endif
CacheMode cacheMode() const;
@@ -228,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);
@@ -310,6 +314,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/qgraphicsview_p.h b/src/widgets/graphicsview/qgraphicsview_p.h
index 9f0e3e3b24..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
@@ -110,6 +110,7 @@ public:
QPoint mousePressViewPoint;
QPoint mousePressScreenPoint;
QPointF lastMouseMoveScenePoint;
+ QPointF lastRubberbandScenePoint;
QPoint lastMouseMoveScreenPoint;
QPoint dirtyScrollOffset;
Qt::MouseButton mousePressButton;
@@ -138,7 +139,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
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 3f8720f6e9..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
@@ -47,8 +47,6 @@
#include <QtWidgets/qgraphicsitem.h>
#include <QtGui/qpalette.h>
-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/graphicsview/qgraphicswidget_p.cpp b/src/widgets/graphicsview/qgraphicswidget_p.cpp
index e97ec90cd0..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
@@ -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<QGraphicsWidget *>(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)
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 28635b0595..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
@@ -45,8 +45,6 @@
#include <QtCore/qobject.h>
#include <QtWidgets/qstyleoption.h>
-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.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index fa873b63a5..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
@@ -63,7 +63,7 @@
#include <private/qabstractitemmodel_p.h>
#ifndef QT_NO_ACCESSIBILITY
#include <qaccessible.h>
-#include <qaccessible2.h>
+#include <private/qaccessible2_p.h>
#endif
#ifndef QT_NO_GESTURES
# include <qscroller.h>
@@ -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);
}
}
@@ -3816,13 +3817,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<const QInputEvent*>(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:
diff --git a/src/widgets/itemviews/qabstractitemview.h b/src/widgets/itemviews/qabstractitemview.h
index ad5e1de562..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
@@ -47,8 +47,6 @@
#include <QtCore/qitemselectionmodel.h>
#include <QtWidgets/qabstractitemdelegate.h>
-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/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 a340be0823..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractitemview.h>
-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/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 d65d06a4ab..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
@@ -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.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 6ecd9a3990..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
@@ -46,8 +46,6 @@
#include <QtCore/qdir.h>
#include <QtWidgets/qfileiconprovider.h>
-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.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 a7a7d508ce..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
@@ -46,8 +46,6 @@
#include <QtCore/qscopedpointer.h>
#include <QtGui/qicon.h>
-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.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 4e2b7d24c6..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractitemview.h>
-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/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 98687313ed..f2c3c4702f 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 17b0e94625..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
@@ -47,8 +47,6 @@
#include <QtGui/qpixmap.h>
#include <QtCore/qvariant.h>
-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.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 f52f4c5b64..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
@@ -47,8 +47,6 @@
#include <QtCore/qhash.h>
#include <QtCore/qvariant.h>
-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/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 a7164142dd..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractitemview.h>
-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/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 1a8c56c907..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
@@ -47,8 +47,6 @@
#include <QtCore/qvector.h>
#include <QtCore/qitemselectionmodel.h>
-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/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 540ea27b88..e92ccc2455 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 8aa056d769..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
@@ -47,8 +47,6 @@
#include <QtGui/qpixmap.h>
#include <QtCore/qvariant.h>
-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.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 8f4c73d9f1..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractitemview.h>
-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/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 6d9da27fdf..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
@@ -47,8 +47,6 @@
#include <QtCore/qvector.h>
//#include <QtWidgets/qitemselectionmodel.h>
-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/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 6046ef50a5..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
@@ -52,9 +52,10 @@
#include <qevent.h>
#include <qpen.h>
#include <qdebug.h>
+#include <QMetaMethod>
#ifndef QT_NO_ACCESSIBILITY
#include <qaccessible.h>
-#include <qaccessible2.h>
+#include <private/qaccessible2_p.h>
#endif
#include <private/qtreeview_p.h>
@@ -749,6 +750,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))
@@ -2644,7 +2647,17 @@ void QTreeView::expandAll()
void QTreeView::collapseAll()
{
Q_D(QTreeView);
+ QSet<QPersistentModelIndex> old_expandedIndexes;
+ old_expandedIndexes = d->expandedIndexes;
d->expandedIndexes.clear();
+ if (!signalsBlocked() && isSignalConnected(QMetaMethod::fromSignal(&QTreeView::collapsed))) {
+ QSet<QPersistentModelIndex>::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();
}
@@ -2658,6 +2671,8 @@ void QTreeView::expandToDepth(int depth)
{
Q_D(QTreeView);
d->viewItems.clear();
+ QSet<QPersistentModelIndex> old_expandedIndexes;
+ old_expandedIndexes = d->expandedIndexes;
d->expandedIndexes.clear();
d->interruptDelayedItemsLayout();
d->layout(-1);
@@ -2668,6 +2683,29 @@ void QTreeView::expandToDepth(int depth)
d->storeExpanded(d->viewItems.at(i).index);
}
}
+
+ bool someSignalEnabled = isSignalConnected(QMetaMethod::fromSignal(&QTreeView::collapsed));
+ someSignalEnabled |= isSignalConnected(QMetaMethod::fromSignal(&QTreeView::expanded));
+
+ if (!signalsBlocked() && someSignalEnabled) {
+ // emit signals
+ QSet<QPersistentModelIndex> collapsedIndexes = old_expandedIndexes - d->expandedIndexes;
+ QSet<QPersistentModelIndex>::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<QPersistentModelIndex> 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();
}
@@ -2887,6 +2925,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 +2937,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,9 +3229,9 @@ void QTreeViewPrivate::layout(int i, bool recursiveExpanding, bool afterIsUninit
item->expanded = false;
item->total = 0;
item->hasMoreSiblings = false;
- if (recursiveExpanding || isIndexExpanded(current)) {
- if (recursiveExpanding)
- expandedIndexes.insert(current);
+ if ((recursiveExpanding && !(current.flags() & Qt::ItemNeverHasChildren)) || isIndexExpanded(current)) {
+ if (recursiveExpanding && storeExpanded(current) && !q->signalsBlocked())
+ emit q->expanded(current);
item->expanded = true;
layout(last, recursiveExpanding, afterIsUninitialized);
item = &viewItems[last];
diff --git a/src/widgets/itemviews/qtreeview.h b/src/widgets/itemviews/qtreeview.h
index 54e580985c..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractitemview.h>
-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/qtreeview_p.h b/src/widgets/itemviews/qtreeview_p.h
index 5a0821c9cf..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
@@ -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
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 a16a1cd9c2..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
@@ -47,8 +47,6 @@
#include <QtCore/qvariant.h>
#include <QtCore/qvector.h>
-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/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 e8854d8197..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
@@ -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<QTreeWidgetItem *> 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<QTreeWidgetItem *> 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);
}
diff --git a/src/widgets/itemviews/qtreewidgetitemiterator.h b/src/widgets/itemviews/qtreewidgetitemiterator.h
index ec604e8b1a..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
@@ -45,8 +45,6 @@
#include <QtCore/qglobal.h>
#include <QtCore/qscopedpointer.h>
-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/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/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/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
}
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 5fb4c655eb..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
@@ -48,8 +48,6 @@
#include <QtCore/qvariant.h>
#include <QtGui/qicon.h>
-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/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 13c5ea8ef1..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qaction.h>
-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.cpp b/src/widgets/kernel/qapplication.cpp
index 7f41e5c576..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
@@ -588,8 +588,6 @@ extern void qRegisterWidgetsVariant();
*/
void QApplicationPrivate::initialize()
{
- is_app_running = false; // Starting up.
-
QWidgetPrivate::mapper = new QWidgetMapper;
QWidgetPrivate::allWidgets = new QWidgetSet;
@@ -603,10 +601,10 @@ void QApplicationPrivate::initialize()
qRegisterGuiStateMachine();
#endif
- Q_Q(QApplication);
+ is_app_running = true; // no longer starting up
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
@@ -629,8 +627,6 @@ void QApplicationPrivate::initialize()
if (QApplication::desktopSettingsAware())
if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme())
QApplicationPrivate::enabledAnimations = theme->themeHint(QPlatformTheme::UiEffects).toInt();
-
- is_app_running = true; // no longer starting up
}
/*****************************************************************************
@@ -969,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()) {
@@ -2012,7 +2004,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;
@@ -2022,18 +2015,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);
@@ -3562,8 +3566,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()
*/
/*!
@@ -3767,8 +3771,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;
@@ -3799,7 +3801,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())
diff --git a/src/widgets/kernel/qapplication.h b/src/widgets/kernel/qapplication.h
index 29f5ddf455..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
@@ -55,8 +55,6 @@
#endif
#include <QtGui/qguiapplication.h>
-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/qapplication_p.h b/src/widgets/kernel/qapplication_p.h
index fbd96366fb..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
@@ -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/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 c3661f5c50..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
@@ -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/qboxlayout.h b/src/widgets/kernel/qboxlayout.h
index 3ced397c1d..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
@@ -49,8 +49,6 @@
#include <limits.h>
-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.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 c27e96a2d9..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/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/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 9f0089616b..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
@@ -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;
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 a206e90009..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
@@ -44,8 +44,6 @@
#include <QtWidgets/QLayout>
-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.cpp b/src/widgets/kernel/qgesture.cpp
index 24ae437b48..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
@@ -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/qgesture.h b/src/widgets/kernel/qgesture.h
index 4384600f80..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
@@ -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/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 b85aa54a6b..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
@@ -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.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 9349c7807d..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
@@ -49,8 +49,6 @@
#include <limits.h>
-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.cpp b/src/widgets/kernel/qlayout.cpp
index 493a04d2ba..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
@@ -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/qlayout.h b/src/widgets/kernel/qlayout.h
index 09ddebeb2a..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
@@ -50,8 +50,6 @@
#include <limits.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -171,6 +169,4 @@ QT_END_NAMESPACE
#include <QtWidgets/qboxlayout.h>
#include <QtWidgets/qgridlayout.h>
-QT_END_HEADER
-
#endif // QLAYOUT_H
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 31276d015d..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
@@ -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/qlayoutitem.h b/src/widgets/kernel/qlayoutitem.h
index b19a7c789f..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
@@ -47,12 +47,10 @@
#include <limits.h>
-QT_BEGIN_HEADER
-
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;
@@ -180,6 +178,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QLAYOUTITEM_H
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 f5daa381f7..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qwidget.h>
#include <QtGui/qkeysequence.h>
-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..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
@@ -44,8 +44,6 @@
#include <QtCore/qobject.h>
-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.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 a8067b5bab..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qlayout.h>
-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/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 3a09803598..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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.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 7e41e5ab58..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
@@ -45,8 +45,6 @@
#include <QtCore/qobject.h>
#include <QtGui/qcursor.h>
-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.cpp b/src/widgets/kernel/qwidget.cpp
index f82d33f283..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
@@ -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());
}
}
@@ -677,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
@@ -6137,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;
}
@@ -8575,6 +8600,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();
}
/*!
@@ -8797,7 +8826,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
{
@@ -9097,7 +9126,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:
@@ -9255,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.h b/src/widgets/kernel/qwidget.h
index 25dac1ed5e..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
@@ -60,8 +60,6 @@
#include <QtGui/qevent.h>
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -593,6 +591,8 @@ public:
QWindow *windowHandle() const;
+ static QWidget *createWindowContainer(QWindow *window, QWidget *parent=0, Qt::WindowFlags flags=0);
+
friend class QDesktopScreenWidget;
Q_SIGNALS:
@@ -855,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/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 2ffe9c5de5..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
@@ -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()
@@ -989,6 +994,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))
@@ -1022,11 +1033,11 @@ 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
+#endif //QT_NO_CURSOR
QT_END_NAMESPACE
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 14f1bfaf7f..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qaction.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -61,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 *);
@@ -85,6 +83,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QWIDGETACTION_H
diff --git a/src/widgets/kernel/qwidgetaction_p.h b/src/widgets/kernel/qwidgetaction_p.h
index a95fe07534..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
@@ -66,7 +66,7 @@ public:
QList<QWidget *> createdWidgets;
uint defaultWidgetInUse : 1;
uint autoCreated : 1; // created by QToolBar::addWidget and the like
-
+
inline void _q_widgetDestroyed(QObject *o) {
createdWidgets.removeAll(static_cast<QWidget *>(o));
}
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/qwidgetsfunctions_wince.h b/src/widgets/kernel/qwidgetsfunctions_wince.h
index 5d3640ae75..ca742e296a 100644
--- a/src/widgets/kernel/qwidgetsfunctions_wince.h
+++ b/src/widgets/kernel/qwidgetsfunctions_wince.h
@@ -40,14 +40,15 @@
****************************************************************************/
#ifndef QWIDGETSFUNCTIONS_WCE_H
#define QWIDGETSFUNCTIONS_WCE_H
+
+#include <QtCore/qglobal.h>
+
#ifdef Q_OS_WINCE
#include <QtCore/qfunctions_wince.h>
#ifdef QT_BUILD_GUI_LIB
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_END_NAMESPACE
-QT_END_HEADER
#endif
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 50b61beb05..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
@@ -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<QFocusEvent *>(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);
@@ -352,6 +392,27 @@ 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)) {
+ // 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();
+ 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
diff --git a/src/widgets/kernel/qwidgetwindow_qpa_p.h b/src/widgets/kernel/qwidgetwindow_qpa_p.h
index 7e40ded8c8..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
@@ -47,8 +47,6 @@
#include <QtCore/private/qobject_p.h>
#include <QtGui/private/qevent_p.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -72,6 +70,7 @@ protected:
void handleCloseEvent(QCloseEvent *);
void handleEnterLeaveEvent(QEvent *);
+ void handleFocusInEvent(QFocusEvent *);
void handleKeyEvent(QKeyEvent *);
void handleMouseEvent(QMouseEvent *);
void handleNonClientAreaMouseEvent(QMouseEvent *);
@@ -102,6 +101,12 @@ private slots:
private:
void updateGeometry();
+ enum FocusWidgets {
+ FirstFocusWidget,
+ LastFocusWidget
+ };
+ QWidget *getFocusWidget(FocusWidgets fw);
+
QWidget *m_widget;
QPointer<QWidget> m_implicit_mouse_grabber;
#ifndef QT_NO_DRAGANDDROP
@@ -111,6 +116,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QWIDGETWINDOW_QPA_P_H
diff --git a/src/widgets/kernel/qwindowcontainer.cpp b/src/widgets/kernel/qwindowcontainer.cpp
new file mode 100644
index 0000000000..b02b05552f
--- /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 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 "qwindowcontainer_p.h"
+#include "qwidget_p.h"
+#include <QtGui/qwindow.h>
+
+QT_BEGIN_NAMESPACE
+
+class QWindowContainerPrivate : public QWidgetPrivate
+{
+public:
+ Q_DECLARE_PUBLIC(QWindowContainer)
+
+ QWindowContainerPrivate() : window(0), oldFocusWindow(0) { }
+ ~QWindowContainerPrivate() { }
+
+ QPointer<QWindow> 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<QChildEvent *>(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/mkspecs/unsupported/linux-android-x86-g++/qplatformdefs.h b/src/widgets/kernel/qwindowcontainer_p.h
index 38b5f6e6d2..37c023fc1d 100644
--- a/mkspecs/unsupported/linux-android-x86-g++/qplatformdefs.h
+++ b/src/widgets/kernel/qwindowcontainer_p.h
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2012 Collabora Ltd, author <robin.burchell@collabora.co.uk>
+** 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.
+** This file is part of the QtWidgets module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -39,4 +39,31 @@
**
****************************************************************************/
-#include "../../common/android/qplatformdefs.h"
+#ifndef QWINDOWCONTAINER_H
+#define QWINDOWCONTAINER_H
+
+#include <QtWidgets/qwidget.h>
+
+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
+
+#endif // QWINDOWCONTAINER_H
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 e574dd7406..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
@@ -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<QDragEnterEvent*>(e));
case QEvent::DragMove:
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 9be5a67c0f..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
@@ -44,8 +44,6 @@
#include <QtCore/qeventtransition.h>
-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.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 b215df8bc1..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
@@ -44,8 +44,6 @@
#include <QtCore/qeventtransition.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -86,6 +84,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
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
--- /dev/null
+++ b/src/widgets/styles/images/toolbar-ext.png
Binary files 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
--- /dev/null
+++ b/src/widgets/styles/images/toolbar-ext@2x.png
Binary files differ
diff --git a/src/widgets/styles/qandroidstyle.cpp b/src/widgets/styles/qandroidstyle.cpp
new file mode 100644
index 0000000000..d82a06987a
--- /dev/null
+++ b/src/widgets/styles/qandroidstyle.cpp
@@ -0,0 +1,1601 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+** 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 <QFile>
+#include <QFont>
+#include <QApplication>
+#include <QTime>
+#include <qdrawutil.h>
+#include <QPixmapCache>
+#include <QFileInfo>
+#include <QStyleOption>
+#include <QPainter>
+#include <QJsonDocument>
+#include <QJsonObject>
+
+#include <QDebug>
+
+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<const QStyleOptionButton *>(opt)) {
+ QMargins padding = it.value()->padding();
+ QStyleOptionButton copy (*buttonOption);
+ copy.rect.adjust(padding.left(), padding.top(), -padding.right(), -padding.bottom());
+ QCommonStyle::drawControl(CE_PushButtonLabel, &copy, p, w);
+ }
+ break;
+ case QC_Checkbox:
+ case QC_RadioButton:
+ if (const QStyleOptionButton *btn =
+ qstyleoption_cast<const QStyleOptionButton *>(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<const QStyleOptionComboBox *>(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<const QStyleOptionSlider *>(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<const QAndroidStyle::AndroidImageDrawable *>(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<int> & 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 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;
+ 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<int *>(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, &copy);
+}
+
+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<<item;
+ }
+}
+
+QAndroidStyle::AndroidStateDrawable::~AndroidStateDrawable()
+{
+ foreach (const StateType type, m_states)
+ delete type.second;
+}
+
+QAndroidStyle::AndroidDrawableType QAndroidStyle::AndroidStateDrawable::type() const
+{
+ return QAndroidStyle::State;
+}
+
+void QAndroidStyle::AndroidStateDrawable::draw(QPainter *painter, const QStyleOption *opt) const
+{
+ const AndroidDrawable *drawable=bestAndroidStateMatch(opt);
+ if (drawable)
+ drawable->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<const AndroidStateDrawable *>(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<const AndroidStateDrawable*>(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<const AndroidStateDrawable *>(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<const QStyleOptionProgressBar *>(option)) {
+ QStyleOptionProgressBarV2 progressBarV2(*progressBarOption);
+ if (m_progressDrawable->type() == QAndroidStyle::Layer) {
+ QAndroidStyle::AndroidDrawable *clipDrawable = static_cast<QAndroidStyle::AndroidLayerDrawable *>(m_progressDrawable)->layer(m_progressId);
+ if (clipDrawable->type() == QAndroidStyle::Clip)
+ static_cast<QAndroidStyle::AndroidClipDrawable *>(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<const QStyleOptionProgressBar *>(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_minSize.height())
+ r.setHeight(m_minSize.height());
+
+ if (r.height()>m_maxSize.height())
+ r.setHeight(m_maxSize.height());
+ } else {
+ if (r.width()<m_minSize.width())
+ r.setWidth(m_minSize.width());
+
+ 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<const QStyleOptionProgressBar *>(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<const QStyleOptionSlider *>(option)) {
+ double factor = double(styleOption->sliderPosition/(styleOption->maximum-styleOption->minimum));
+ if (m_progressDrawable->type()==QAndroidStyle::Layer) {
+ QAndroidStyle::AndroidDrawable *clipDrawable = static_cast<QAndroidStyle::AndroidLayerDrawable *>(m_progressDrawable)->layer(m_progressId);
+ if (clipDrawable->type() == QAndroidStyle::Clip)
+ static_cast<QAndroidStyle::AndroidClipDrawable *>(clipDrawable)->setFactor(factor, styleOption->orientation);
+ }
+ const AndroidDrawable *drawable=m_seekBarThumb;
+ if (drawable->type() == State)
+ drawable = static_cast<const QAndroidStyle::AndroidStateDrawable *>(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, &copy);
+ 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, &copy);
+ }
+}
+
+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<const QAndroidStyle::AndroidStateDrawable *>(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<const QStyleOptionSlider *>(option);
+
+ if (m_seekBarThumb && sc == SC_SliderHandle && styleOption) {
+ const AndroidDrawable *drawable = m_seekBarThumb;
+ if (drawable->type() == State)
+ drawable = static_cast<const QAndroidStyle::AndroidStateDrawable *>(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..2d9abd65c5
--- /dev/null
+++ b/src/widgets/styles/qandroidstyle_p.h
@@ -0,0 +1,382 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+** 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 <QtCore/QList>
+#include <QtCore/QMargins>
+#include <QtWidgets/QCommonStyle>
+#include <QtCore/QHash>
+#include <QtCore/QVariantMap>
+
+QT_BEGIN_NAMESPACE
+
+#if !defined(QT_NO_STYLE_ANDROID)
+
+class Q_WIDGETS_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<int> xDivs;
+ QVector<int> yDivs;
+ QVector<int> 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<int> &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<int, const AndroidDrawable *> StateType;
+ QList<StateType> 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<int, AndroidDrawable *> LayerType;
+ QList<LayerType> 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<AndroidItemStateInfo *> 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<int, AndroidControl *> 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 4b6ba17595..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
@@ -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);
@@ -3003,7 +3003,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
case SE_ToolBarHandle:
if (const QStyleOptionToolBar *tbopt = qstyleoption_cast<const QStyleOptionToolBar *>(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<const QToolBar*>(widget);
const int margin = tb && tb->layout() ? tb->layout()->margin() : 2;
@@ -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<const QStyleOptionSpinBox *>(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:
@@ -5090,11 +5100,18 @@ 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;
break;
+ case SH_Menu_SupportsSections:
+ ret = false;
+ break;
default:
ret = 0;
break;
diff --git a/src/widgets/styles/qcommonstyle.h b/src/widgets/styles/qcommonstyle.h
index 1d203ded34..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qstyle.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
class QCommonStylePrivate;
@@ -53,7 +51,7 @@ class QCommonStylePrivate;
class Q_WIDGETS_EXPORT QCommonStyle: public QStyle
{
Q_OBJECT
-
+
public:
QCommonStyle();
~QCommonStyle();
@@ -105,6 +103,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QCOMMONSTYLE_H
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 0699ff8914..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
@@ -39,6 +39,8 @@
**
****************************************************************************/
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_IMAGEFORMAT_XPM
//
diff --git a/src/widgets/styles/qdrawutil.cpp b/src/widgets/styles/qdrawutil.cpp
index 0f73a16bcb..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
@@ -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/qdrawutil.h b/src/widgets/styles/qdrawutil.h
index f0cc98f54a..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
@@ -46,8 +46,6 @@
#include <QtCore/qstring.h> // char*->QString conversion
#include <QtCore/qmargins.h>
#include <QtGui/qpixmap.h>
-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.cpp b/src/widgets/styles/qfusionstyle.cpp
index 11558de16a..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
@@ -1768,12 +1768,10 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
painter->save();
{
painter->fillRect(rect, option->palette.window());
- if (widget && qobject_cast<const QMainWindow *>(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;
@@ -3475,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/qfusionstyle_p.h b/src/widgets/styles/qfusionstyle_p.h
index e024677a9b..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qcommonstyle.h>
-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/qfusionstyle_p_p.h b/src/widgets/styles/qfusionstyle_p_p.h
index d3f2ff5f40..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
@@ -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))
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 159f8dce83..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
@@ -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));
}
@@ -3171,7 +3171,8 @@ void QGtkStyle::drawControl(ControlElement element,
#ifndef QT_NO_COMBOBOX
- if (qobject_cast<const QComboBox*>(widget))
+ if (qobject_cast<const QComboBox*>(widget) ||
+ (option->styleObject && option->styleObject->property("_q_isComboBoxPopupItem").toBool()))
ignoreCheckMark = true; // Ignore the checkmarks provided by the QComboMenuDelegate
#endif
@@ -3912,7 +3913,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/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 f2710af4c6..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
@@ -47,8 +47,6 @@
#include <QtGui/QFont>
#include <QtWidgets/QFileDialog>
-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/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.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 132cc8d59e..4adda2f151 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
@@ -41,14 +41,13 @@
/*
Note: The qdoc comments for QMacStyle are contained in
- .../doc/src/qstyles.qdoc.
+ .../doc/src/qstyles.qdoc.
*/
#include <Cocoa/Cocoa.h>
#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
@@ -458,6 +457,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 +467,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 +496,7 @@ public:
return *this;
}
};
+} // anonymous namespace
static QColor qcolorFromCGColor(CGColorRef cgcolor)
{
@@ -578,19 +580,17 @@ QRegion qt_mac_fromHIShapeRef(HIShapeRef shape)
}
CGColorSpaceRef m_genericColorSpace = 0;
-QHash<CGDirectDisplayID, CGColorSpaceRef> m_displayColorSpaceHash;
+static QHash<CGDirectDisplayID, CGColorSpaceRef> 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) {
-#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();
}
@@ -606,11 +606,26 @@ CGColorSpaceRef qt_mac_genericColorSpace()
#endif
}
+static void qt_mac_cleanUpMacColorSpaces()
+{
+ if (m_genericColorSpace) {
+ CFRelease(m_genericColorSpace);
+ m_genericColorSpace = 0;
+ }
+ QHash<CGDirectDisplayID, CGColorSpaceRef>::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;
@@ -639,27 +654,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<CGDirectDisplayID, CGColorSpaceRef>::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<NSWindow*>(
@@ -2371,6 +2370,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) {
@@ -2954,16 +2956,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;
@@ -2975,12 +2977,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();
@@ -3196,18 +3192,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<QMainWindow *>(w->parent()) == 0 ||
- qobject_cast<QMainWindow *>(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) {
@@ -3413,7 +3397,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);
@@ -4905,14 +4889,12 @@ 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
- 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;
@@ -5303,7 +5285,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);
@@ -5981,10 +5963,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);
@@ -6012,12 +5995,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
@@ -6368,7 +6351,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);
@@ -6484,7 +6467,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
@@ -6525,6 +6508,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();
@@ -6537,7 +6523,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;
@@ -6579,7 +6564,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<const QWidget *>(paintDevice) : 0);
diff --git a/src/widgets/styles/qmacstyle_mac_p.h b/src/widgets/styles/qmacstyle_mac_p.h
index d06a5a951f..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qcommonstyle.h>
-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/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 66ace0f60b..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
@@ -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.
@@ -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.
*/
@@ -127,6 +126,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.
*/
QProxyStyle::~QProxyStyle()
diff --git a/src/widgets/styles/qproxystyle.h b/src/widgets/styles/qproxystyle.h
index 52b02c8e5b..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
@@ -44,8 +44,6 @@
#include <QtWidgets/QCommonStyle>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -57,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;
@@ -107,6 +106,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPROXYSTYLE_H
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 9c4901795d..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
@@ -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}.
*/
@@ -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 b69f5da6c5..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
@@ -50,8 +50,6 @@
#include <QtGui/qpalette.h>
#include <QtWidgets/qsizepolicy.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -699,6 +697,7 @@ public:
SH_ToolButtonStyle,
SH_RequestSoftwareInputPanel,
SH_ScrollBar_Transient,
+ SH_Menu_SupportsSections,
// Add new style hint values here
SH_CustomBase = 0xf0000000
@@ -831,6 +830,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/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 @@
<file>images/closedock-down-16.png</file>
<file>images/dockdock-16.png</file>
<file>images/dockdock-down-16.png</file>
+ <file>images/toolbar-ext.png</file>
+ <file>images/toolbar-ext@2x.png</file>
</qresource>
</RCC>
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 61048df96a..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
@@ -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);
- }
}
QStyleAnimation::~QStyleAnimation()
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 471d3b748d..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
@@ -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/qstylefactory.h b/src/widgets/styles/qstylefactory.h
index 500e86a9d4..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
@@ -44,8 +44,6 @@
#include <QtCore/qstringlist.h>
-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/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 01e51d594d..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
@@ -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;
@@ -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/qstyleoption.h b/src/widgets/styles/qstyleoption.h
index 4109c8e702..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
@@ -56,8 +56,6 @@
# include <QtCore/qabstractitemmodel.h>
#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.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 dee01c09a3..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
@@ -46,8 +46,6 @@
#include <QtWidgets/qstyle.h>
#include <QtWidgets/qwidget.h>
-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.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 d34f0c0a15..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
@@ -45,8 +45,6 @@
#include <QtCore/qplugin.h>
#include <QtCore/qfactoryinterface.h>
-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/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 5d38abe41b..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
@@ -44,8 +44,6 @@
#include <private/qwindowsstyle_p.h>
-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/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 2b30bf5a2d..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
@@ -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<QWindowsMobileStylePrivate*>(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<const QStyleOptionTab *>(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/qwindowsmobilestyle_p.h b/src/widgets/styles/qwindowsmobilestyle_p.h
index 21df982344..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
@@ -44,8 +44,6 @@
#include <private/qwindowsstyle_p.h>
-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/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 2b48096a7b..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
@@ -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<const QStyleOptionToolButton *>(opt))
return sz += QSize(7, 6);
diff --git a/src/widgets/styles/qwindowsstyle_p.h b/src/widgets/styles/qwindowsstyle_p.h
index 65573acf67..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qcommonstyle.h>
-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/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 a621cab04d..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
@@ -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);
@@ -1585,7 +1585,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<const QStyleOptionSlider *>(option)) {
QRect oldSliderPos = styleObject->property("_q_stylesliderpos").toRect();
@@ -1944,7 +1944,7 @@ QSize QWindowsVistaStyle::sizeFromContents(ContentsType type, const QStyleOption
minimumHeight = qMax<qint32>(size.cy + margins.cyBottomHeight+ margins.cyTopHeight, sz.height());
sz.rwidth() += size.cx + margins.cxLeftWidth + margins.cxRightWidth;
}
-
+
if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) {
if (menuitem->menuItemType != QStyleOptionMenuItem::Separator)
sz.setHeight(minimumHeight);
diff --git a/src/widgets/styles/qwindowsvistastyle_p.h b/src/widgets/styles/qwindowsvistastyle_p.h
index 2a06c78806..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
@@ -44,8 +44,6 @@
#include <private/qwindowsxpstyle_p.h>
-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/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 626bcc4ad7..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
@@ -44,8 +44,6 @@
#include <private/qwindowsstyle_p.h>
-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/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/styles/styles.pri b/src/widgets/styles/styles.pri
index b15eb1fa48..b39b17fd86 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
+!macx:styles -= mac
contains(QT_CONFIG, gtkstyle) {
QMAKE_CXXFLAGS += $$QT_CFLAGS_QGTKSTYLE
@@ -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
@@ -136,3 +135,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/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 d3b9535923..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
@@ -47,8 +47,6 @@
#include <QtCore/qvector.h>
#include <QtGui/qwindowdefs.h>
-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/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..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
@@ -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/qcompleter.h b/src/widgets/util/qcompleter.h
index ba43e4470a..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
@@ -48,8 +48,6 @@
#include <QtCore/qabstractitemmodel.h>
#include <QtCore/qrect.h>
-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/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 1670d0ab57..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
@@ -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/qscroller.h b/src/widgets/util/qscroller.h
index b0ff9dc5c5..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
@@ -46,8 +46,6 @@
#include <QtCore/QPointF>
#include <QtWidgets/QScrollerProperties>
-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/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 ed593ea2cb..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
@@ -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/qscrollerproperties.h b/src/widgets/util/qscrollerproperties.h
index 58bce74bca..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
@@ -46,8 +46,6 @@
#include <QtCore/QMetaType>
#include <QtCore/QVariant>
-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/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 a5d3aedf76..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
@@ -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,
@@ -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.h b/src/widgets/util/qsystemtrayicon.h
index 201ea85253..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
@@ -48,8 +48,6 @@
#include <QtGui/qicon.h>
-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/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 209fb206e1..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
@@ -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);
@@ -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;
@@ -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)) {
diff --git a/src/widgets/util/qsystemtrayicon_wince.cpp b/src/widgets/util/qsystemtrayicon_wince.cpp
index b6937aee2f..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
@@ -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/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 8e888f993b..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
@@ -45,8 +45,6 @@
#include <QtCore/qobject.h>
#include <QtCore/qstring.h>
-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.cpp b/src/widgets/util/qundostack.cpp
index 77726adf27..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
@@ -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/util/qundostack.h b/src/widgets/util/qundostack.h
index 44b8337f57..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
@@ -45,8 +45,6 @@
#include <QtCore/qobject.h>
#include <QtCore/qstring.h>
-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/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 bc262799d9..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
@@ -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/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
}
diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp
index 5e9d100214..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
@@ -380,7 +380,7 @@ void QAbstractButtonPrivate::moveFocus(int key)
QAbstractButton *fb = qobject_cast<QAbstractButton *>(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/qabstractbutton.h b/src/widgets/widgets/qabstractbutton.h
index 9c27e3523f..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
@@ -46,8 +46,6 @@
#include <QtGui/qkeysequence.h>
#include <QtWidgets/qwidget.h>
-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/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 391a06917c..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
@@ -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/qabstractscrollarea.h b/src/widgets/widgets/qabstractscrollarea.h
index 79038e9fdd..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qframe.h>
-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/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 5932e1be9b..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
@@ -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.h b/src/widgets/widgets/qabstractslider.h
index a49970a2d5..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/qabstractslider_p.h b/src/widgets/widgets/qabstractslider_p.h
index 42f25501b1..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
@@ -87,7 +87,7 @@ public:
QBasicTimer repeatActionTimer;
int repeatActionTime;
QAbstractSlider::SliderAction repeatAction;
-
+
#ifdef QT_KEYPAD_NAVIGATION
int origValue;
diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp
index 14d22c458b..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
@@ -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/qabstractspinbox.h b/src/widgets/widgets/qabstractspinbox.h
index 49cd8f38f1..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qwidget.h>
#include <QtGui/qvalidator.h>
-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/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 3da81f8360..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
@@ -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/qbuttongroup.h b/src/widgets/widgets/qbuttongroup.h
index 76ce549d95..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
@@ -44,8 +44,6 @@
#include <QtCore/qobject.h>
-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/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 0fdf039bc3..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
@@ -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/qcalendarwidget.h b/src/widgets/widgets/qcalendarwidget.h
index 5d4c1722b4..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qwidget.h>
#include <QtCore/qdatetime.h>
-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.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 1bf1bf56a0..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractbutton.h>
-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/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 0eb5881b93..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
@@ -47,8 +47,6 @@
#include <QtCore/qabstractitemmodel.h>
#include <QtCore/qvariant.h>
-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/qcombobox_p.h b/src/widgets/widgets/qcombobox_p.h
index 0004e3d5ab..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
@@ -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/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 a74d6a7b84..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qpushbutton.h>
-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.cpp b/src/widgets/widgets/qdatetimeedit.cpp
index fb64850923..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
@@ -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<int>(w, fm.width(s));
- s = d->textFromValue(d->maximum) + QLatin1String(" ");
+ s = d->textFromValue(d->maximum) + QLatin1Char(' ');
w = qMax<int>(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/qdatetimeedit.h b/src/widgets/widgets/qdatetimeedit.h
index d3197632cf..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
@@ -46,8 +46,6 @@
#include <QtCore/qvariant.h>
#include <QtWidgets/qabstractspinbox.h>
-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/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 c7be201b96..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qabstractslider.h>
-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.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 06776bbd93..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp
index 7631014905..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
@@ -2004,7 +2004,7 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
//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/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 993ae6b914..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/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 8cd944e133..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
@@ -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/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 2993ed5c7f..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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.cpp b/src/widgets/widgets/qfontcombobox.cpp
index 1b9a08b0d2..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
@@ -56,46 +56,33 @@ QT_BEGIN_NAMESPACE
static QFontDatabase::WritingSystem writingSystemForFont(const QFont &font, bool *hasLatin)
{
- *hasLatin = true;
-
QList<QFontDatabase::WritingSystem> 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
diff --git a/src/widgets/widgets/qfontcombobox.h b/src/widgets/widgets/qfontcombobox.h
index e5e1580cdb..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
@@ -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.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 021d7f5ab0..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/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 6c8da10b8e..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
@@ -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 d462a574fd..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qframe.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -97,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;
@@ -111,6 +109,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QGROUPBOX_H
diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp
index a9a9c0cea5..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
@@ -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;
diff --git a/src/widgets/widgets/qlabel.h b/src/widgets/widgets/qlabel.h
index 114d239918..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qframe.h>
-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/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 4495f40f7f..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qframe.h>
#include <QtCore/qbitarray.h>
-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.cpp b/src/widgets/widgets/qlineedit.cpp
index 65969a7ebb..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
@@ -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
@@ -1758,7 +1758,7 @@ void QLineEdit::focusOutEvent(QFocusEvent *e)
QObject::disconnect(d->control->completer(), 0, this, 0);
}
#endif
- update();
+ QWidget::focusOutEvent(e);
}
/*!\reimp
@@ -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;
}
}
diff --git a/src/widgets/widgets/qlineedit.h b/src/widgets/widgets/qlineedit.h
index af50170d3d..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
@@ -47,8 +47,6 @@
#include <QtCore/qstring.h>
#include <QtCore/qmargins.h>
-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/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index 7f800d831f..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
@@ -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/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 1bb631d296..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
@@ -44,8 +44,6 @@
#include <QtWidgets/QWidget>
-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/qmaccocoaviewcontainer_mac.mm b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm
index 1eadb62d5c..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
@@ -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/qmacnativewidget_mac.h b/src/widgets/widgets/qmacnativewidget_mac.h
index 0a227f1756..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
@@ -44,8 +44,6 @@
#include <QtWidgets/QWidget>
-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/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 d00e75d7ae..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qwidget.h>
#include <QtWidgets/qtabwidget.h>
-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/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 52278e35aa..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qabstractscrollarea.h>
#include <QtWidgets/qtabwidget.h>
-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/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 01ee2528f3..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
@@ -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
diff --git a/src/widgets/widgets/qmdisubwindow.h b/src/widgets/widgets/qmdisubwindow.h
index 9dac7e1ee0..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/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 922a38b324..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
@@ -67,6 +67,7 @@
#include "qwidgetaction.h"
#include "qtoolbutton.h"
#include "qpushbutton.h"
+#include "qtooltip.h"
#include <private/qpushbutton_p.h>
#include <private/qaction_p.h>
#include <private/qguiapplication_p.h>
@@ -259,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 +1514,54 @@ QAction *QMenu::addSeparator()
}
/*!
+ \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 +1593,55 @@ QAction *QMenu::insertSeparator(QAction *before)
}
/*!
+ \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
usually indicates what will happen by default when a drop occurs.
@@ -2368,6 +2469,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<const QHelpEvent*>(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());
@@ -2826,7 +2940,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());
@@ -2834,6 +2948,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());
@@ -3089,6 +3204,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 e58e7a231f..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
@@ -51,8 +51,6 @@
#include <windef.h> // for HMENU
#endif
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -72,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);
@@ -94,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();
@@ -141,6 +145,9 @@ public:
bool separatorsCollapsible() const;
void setSeparatorsCollapsible(bool collapse);
+ bool toolTipsVisible() const;
+ void setToolTipsVisible(bool visible);
+
Q_SIGNALS:
void aboutToShow();
void aboutToHide();
@@ -201,6 +208,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QMENU_H
diff --git a/src/widgets/widgets/qmenu_p.h b/src/widgets/widgets/qmenu_p.h
index 0b8137cff3..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
@@ -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;
diff --git a/src/widgets/widgets/qmenu_wince.cpp b/src/widgets/widgets/qmenu_wince.cpp
index 68a2022e97..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
@@ -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<QAction *> 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/qmenu_wince_resource_p.h b/src/widgets/widgets/qmenu_wince_resource_p.h
index c3ec386780..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
@@ -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.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 4b850ca3fe..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qmenu.h>
-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/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 1e9fc373bb..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
@@ -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/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 72e937b604..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
@@ -41,6 +41,7 @@
#include "qprogressbar.h"
#ifndef QT_NO_PROGRESSBAR
+#include <qlocale.h>
#include <qevent.h>
#include <qpainter.h>
#include <qstylepainter.h>
@@ -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 a1b0fcee1d..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qframe.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -67,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 };
@@ -98,6 +96,7 @@ public:
QProgressBar::Direction textDirection() const;
void setFormat(const QString &format);
+ void resetFormat();
QString format() const;
public Q_SLOTS:
@@ -125,6 +124,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPROGRESSBAR_H
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 3aa3673478..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractbutton.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -105,13 +103,11 @@ 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
};
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QPUSHBUTTON_H
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 13a73ba3c9..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractbutton.h>
-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.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 34962e52cc..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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.cpp b/src/widgets/widgets/qscrollarea.cpp
index 590225e850..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
@@ -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/qscrollarea.h b/src/widgets/widgets/qscrollarea.h
index 18a9fac598..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractscrollarea.h>
-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/qscrollarea_p.h b/src/widgets/widgets/qscrollarea_p.h
index ee38221877..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
@@ -53,6 +53,8 @@
// We mean it.
//
+#include <QtCore/qglobal.h>
+
#ifndef QT_NO_SCROLLAREA
#include "private/qabstractscrollarea_p.h"
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 e9514c59a9..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qwidget.h>
#include <QtWidgets/qabstractslider.h>
-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/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 c79e4716da..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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.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 460d52e57c..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractslider.h>
-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.cpp b/src/widgets/widgets/qspinbox.cpp
index e61c1c877a..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
@@ -268,6 +268,7 @@ void QSpinBox::setPrefix(const QString &prefix)
d->updateEdit();
d->cachedSizeHint = QSize();
+ d->cachedMinimumSizeHint = QSize(); // minimumSizeHint cares about the prefix
updateGeometry();
}
diff --git a/src/widgets/widgets/qspinbox.h b/src/widgets/widgets/qspinbox.h
index 7be16f460b..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractspinbox.h>
-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.cpp b/src/widgets/widgets/qsplashscreen.cpp
index 3711b2f43e..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
@@ -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/qsplashscreen.h b/src/widgets/widgets/qsplashscreen.h
index af97a38cf8..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
@@ -45,8 +45,6 @@
#include <QtGui/qpixmap.h>
#include <QtWidgets/qwidget.h>
-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.cpp b/src/widgets/widgets/qsplitter.cpp
index a8399ed8d5..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
@@ -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/qsplitter.h b/src/widgets/widgets/qsplitter.h
index 79785b257e..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qframe.h>
#include <QtWidgets/qsizepolicy.h>
-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/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 451de7fe40..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qframe.h>
-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.cpp b/src/widgets/widgets/qstatusbar.cpp
index 880ddfaf35..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
@@ -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<QMainWindow *>(parent()) == 0 ||
+ if (parent() == 0 || qobject_cast<QMainWindow *>(parent()) == 0 ||
qobject_cast<QMainWindow *>(parent())->unifiedTitleAndToolBarOnMac() == false )
return QWidget::event(e);
diff --git a/src/widgets/widgets/qstatusbar.h b/src/widgets/widgets/qstatusbar.h
index de3982cffd..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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.cpp b/src/widgets/widgets/qtabbar.cpp
index e0ea3e798d..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
@@ -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;
diff --git a/src/widgets/widgets/qtabbar.h b/src/widgets/widgets/qtabbar.h
index 0bb10c2aa9..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/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 54bf1e638d..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qwidget.h>
#include <QtGui/qicon.h>
-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.cpp b/src/widgets/widgets/qtextbrowser.cpp
index 61e7a5fbfb..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
@@ -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;
}
diff --git a/src/widgets/widgets/qtextbrowser.h b/src/widgets/widgets/qtextbrowser.h
index 900dd27211..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qtextedit.h>
#include <QtCore/qurl.h>
-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.cpp b/src/widgets/widgets/qtextedit.cpp
index f033b6544c..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
@@ -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
diff --git a/src/widgets/widgets/qtextedit.h b/src/widgets/widgets/qtextedit.h
index b44083a502..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
@@ -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/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 a706ccf46e..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qwidget.h>
-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/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 02279ad014..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
@@ -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..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
@@ -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<int> gapIndex(const QPoint &pos, int *maxDistance) const;
bool insertGap(const QList<int> &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/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 1dde9c0a1d..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
@@ -409,7 +409,7 @@ void QToolBarLayout::setGeometry(const QRect &rect)
}
}
#endif
-
+
}
bool QToolBarLayout::layoutActions(const QSize &size)
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 6d7166f2ac..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
@@ -45,8 +45,6 @@
#include <QtWidgets/qframe.h>
#include <QtGui/qicon.h>
-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.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 778f2d8f15..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
@@ -44,8 +44,6 @@
#include <QtWidgets/qabstractbutton.h>
-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/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 f5fd900681..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
@@ -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/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 9a2a83503b..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
@@ -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
diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h
index 070dc660c6..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
@@ -65,8 +65,6 @@
#include <QtGui/qclipboard.h>
#include <QtCore/qmimedata.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -297,6 +295,4 @@ private:
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QWidgetTextControl_H
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
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/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 <QtXml/qtxmlglobal.h>
#include <QtCore/qstring.h>
-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 <QtCore/qglobal.h>
-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.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
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 <QtCore/qlist.h>
#include <QtCore/qscopedpointer.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -417,6 +415,4 @@ inline int QXmlAttributes::count() const
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QXML_H
diff --git a/sync.profile b/sync.profile
index 756f83e409..e07b285dbb 100644
--- a/sync.profile
+++ b/sync.profile
@@ -3,7 +3,7 @@
"QtWidgets" => "$basedir/src/widgets",
"QtPrintSupport" => "$basedir/src/printsupport",
"QtOpenGL" => "$basedir/src/opengl",
- "QtCore" => "$basedir/src/corelib;^$basedir/src/3rdparty/harfbuzz/src",
+ "QtCore" => "$basedir/src/corelib",
"QtXml" => "$basedir/src/xml",
"QtSql" => "$basedir/src/sql",
"QtNetwork" => "$basedir/src/network",
@@ -15,6 +15,7 @@
"GLES2" => "$basedir/src/3rdparty/angle/include/GLES2",
"EGL" => "$basedir/src/3rdparty/angle/include/EGL",
"QtZlib" => "$basedir/src/3rdparty/zlib",
+ "QtOpenGLExtensions" => "$basedir/src/openglextensions",
);
%moduleheaders = ( # restrict the module headers to those found in relative path
);
@@ -56,11 +57,9 @@
my @angle_headers = ('egl.h', 'eglext.h', 'eglplatform.h', 'gl2.h', 'gl2ext.h', 'gl2platform.h', 'ShaderLang.h', 'khrplatform.h');
my @internal_zlib_headers = ( "crc32.h", "deflate.h", "gzguts.h", "inffast.h", "inffixed.h", "inflate.h", "inftrees.h", "trees.h", "zutil.h" );
my @zlib_headers = ( "zconf.h", "zlib.h" );
-my @harfbuzz_headers = ( "harfbuzz-buffer-private.h", "harfbuzz-buffer.h", "harfbuzz-dump.h", "harfbuzz-external.h", "harfbuzz-gdef-private.h", "harfbuzz-gdef.h", "harfbuzz-global.h", "harfbuzz-gpos-private.h", "harfbuzz-gpos.h", "harfbuzz-gsub-private.h", "harfbuzz-gsub.h", "harfbuzz-impl.h", "harfbuzz-open-private.h", "harfbuzz-open.h", "harfbuzz-shape.h", "harfbuzz-shaper-private.h", "harfbuzz-shaper.h", "harfbuzz-stream-private.h", "harfbuzz-stream.h", "harfbuzz.h" );
@ignore_headers = ( @internal_zlib_headers );
-@ignore_for_include_check = ( "qsystemdetection.h", "qcompilerdetection.h", "qprocessordetection.h", @zlib_headers, @angle_headers, @harfbuzz_headers);
-@ignore_for_qt_begin_header_check = ( "qiconset.h", "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qt_windows.h", @zlib_headers, @angle_headers, @harfbuzz_headers);
-@ignore_for_qt_begin_namespace_check = ( "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qatomic_arch.h", "qatomic_windowsce.h", "qt_windows.h", "qatomic_macosx.h", @zlib_headers, @angle_headers, @harfbuzz_headers);
+@ignore_for_include_check = ( "qsystemdetection.h", "qcompilerdetection.h", "qprocessordetection.h", @zlib_headers, @angle_headers);
+@ignore_for_qt_begin_namespace_check = ( "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qatomic_arch.h", "qatomic_windowsce.h", "qt_windows.h", "qatomic_macosx.h", @zlib_headers, @angle_headers);
%inject_headers = ( "$basedir/src/corelib/global" => [ "qconfig.h" ] );
# Module dependencies.
# Every module that is required to build this module should have one entry.
diff --git a/tests/auto/android/AndroidManifest.xml b/tests/auto/android/AndroidManifest.xml
new file mode 100644
index 0000000000..32e2b88d66
--- /dev/null
+++ b/tests/auto/android/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="org.qtproject.qt5.android.tests"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <uses-sdk android:minSdkVersion="4" />
+ <application android:icon="@drawable/icon" android:label="@string/app_name" android:name="org.qtproject.qt5.android.QtNative">
+ <activity android:label="@string/app_name" android:name="org.qtproject.qt5.android.QtActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+ <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
+ <uses-permission android:name="android.permission.INTERNET"/>
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
+ <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+ <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER"/>
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+ <uses-permission android:name="android.permission.BLUETOOTH"/>
+ <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
+ <uses-permission android:name="android.permission.CAMERA"/>
+ <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
+ <uses-permission android:name="android.permission.INJECT_EVENTS"/>
+ <uses-permission android:name="android.permission.NFC"/>
+ <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+ <uses-permission android:name="android.permission.SET_ORIENTATION"/>
+ <uses-permission android:name="android.permission.STATUS_BAR"/>
+ <uses-permission android:name="android.permission.VIBRATE"/>
+ <uses-permission android:name="android.permission.WAKE_LOCK"/>
+ <uses-permission android:name="android.permission.WRITE_CALENDAR"/>
+ <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
+</manifest>
diff --git a/tests/auto/android/res/layout/main.xml b/tests/auto/android/res/layout/main.xml
new file mode 100644
index 0000000000..7fe6bbac67
--- /dev/null
+++ b/tests/auto/android/res/layout/main.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:id="@+id/textView"
+ />
+</LinearLayout>
diff --git a/tests/auto/android/res/values/libs.xml b/tests/auto/android/res/values/libs.xml
new file mode 100644
index 0000000000..7f2858e554
--- /dev/null
+++ b/tests/auto/android/res/values/libs.xml
@@ -0,0 +1,19 @@
+<?xml version='1.0' encoding='utf-8'?>
+<resources>
+ <array name="qt_libs">
+ <item>QtCore</item>
+ <item>QtGui</item>
+ <item>QtTest</item>
+ <item>QtOpenGL</item>
+ <item>QtNetwork</item>
+ <item>QtScript</item>
+ <item>QtSql</item>
+ <item>QtXml</item>
+ <item>QtScriptTools</item>
+ <item>QtSvg</item>
+ <item>QtXmlPatterns</item>
+ <item>QtDeclarative</item>
+ <item>QtWebKit</item>
+ </array>
+ <array name="bundled_libs"/>
+</resources>
diff --git a/tests/auto/android/res/values/strings.xml b/tests/auto/android/res/values/strings.xml
new file mode 100644
index 0000000000..faf61040b5
--- /dev/null
+++ b/tests/auto/android/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">Quadruplor</string>
+</resources>
diff --git a/tests/auto/android/runtests.pl b/tests/auto/android/runtests.pl
new file mode 100755
index 0000000000..70a242f29f
--- /dev/null
+++ b/tests/auto/android/runtests.pl
@@ -0,0 +1,358 @@
+#!/usr/bin/perl -w
+#############################################################################
+##
+## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+## Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
+## Contact: http://www.qt-project.org/legal
+##
+## This file is part of the test suite 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$
+##
+#############################################################################
+
+use Cwd;
+use Cwd 'abs_path';
+use File::Basename;
+use File::Temp 'tempdir';
+use File::Path 'remove_tree';
+use Getopt::Long;
+use Pod::Usage;
+
+### default options
+my @stack = cwd;
+my $device_serial=""; # "-s device_serial";
+my $packageName="org.qtproject.qt5.android.tests";
+my $intentName="$packageName/org.qtproject.qt5.android.QtActivity";
+my $jobs = 4;
+my $testsubset = "";
+my $man = 0;
+my $help = 0;
+my $make_clean = 0;
+my $deploy_qt = 0;
+my $time_out=400;
+my $android_sdk_dir = "$ENV{'HOME'}/NecessitasQtSDK/android-sdk";
+my $ant_tool = `which ant`;
+chomp $ant_tool;
+my $strip_tool="";
+my $readelf_tool="";
+GetOptions('h|help' => \$help
+ , man => \$man
+ , 's|serial=s' => \$device_serial
+ , 't|test=s' => \$testsubset
+ , 'c|clean' => \$make_clean
+ , 'd|deploy' => \$deploy_qt
+ , 'j|jobs=i' => \$jobs
+ , 'sdk=s' => \$android_sdk_dir
+ , 'ant=s' => \$ant_tool
+ , 'strip=s' => \$strip_tool
+ , 'readelf=s' => \$readelf_tool
+ ) or pod2usage(2);
+pod2usage(1) if $help;
+pod2usage(-verbose => 2) if $man;
+
+my $adb_tool="$android_sdk_dir/platform-tools/adb";
+system("$adb_tool devices") == 0 or die "No device found, please plug/start at least one device/emulator\n"; # make sure we have at least on device attached
+
+$device_serial = "-s $device_serial" if ($device_serial);
+$testsubset="/$testsubset" if ($testsubset);
+
+$strip_tool="$ENV{'HOME'}/NecessitasQtSDK/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-strip" unless($strip_tool);
+$readelf_tool="$ENV{'HOME'}/NecessitasQtSDK/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf" unless($readelf_tool);
+$readelf_tool="$readelf_tool -d -w ";
+
+sub dir
+{
+# print "@stack\n";
+}
+
+sub pushd ($)
+{
+ unless ( chdir $_[0] )
+ {
+ warn "Error: $!\n";
+ return;
+ }
+ unshift @stack, cwd;
+ dir;
+}
+
+sub popd ()
+{
+ @stack > 1 and shift @stack;
+ chdir $stack[0];
+ dir;
+}
+
+
+sub waitForProcess
+{
+ my $process=shift;
+ my $action=shift;
+ my $timeout=shift;
+ my $sleepPeriod=shift;
+ $sleepPeriod=1 if !defined($sleepPeriod);
+ print "Waiting for $process ".$timeout*$sleepPeriod." seconds to";
+ print $action?" start...\n":" die...\n";
+ while ($timeout--)
+ {
+ my $output = `$adb_tool $device_serial shell ps 2>&1`; # get current processes
+ #FIXME check why $output is not matching m/.*S $process\n/ or m/.*S $process$/ (eol)
+ my $res=($output =~ m/.*S $process/)?1:0; # check the procress
+ if ($action == $res)
+ {
+ print "... succeed\n";
+ return 1;
+ }
+ sleep($sleepPeriod);
+ print "timeount in ".$timeout*$sleepPeriod." seconds\n"
+ }
+ print "... failed\n";
+ return 0;
+}
+
+my $src_dir_qt=abs_path(dirname($0)."/..");
+my $quadruplor_dir="$src_dir_qt/tests/auto/android";
+my $qmake_path="$src_dir_qt/bin/qmake";
+my $tests_dir="$src_dir_qt/tests$testsubset";
+my $temp_dir=tempdir(CLEANUP => 1);
+my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+my $output_dir=$stack[0]."/".(1900+$year)."-$mon-$mday-$hour:$min";
+mkdir($output_dir);
+my $sdk_api=0;
+my $output = `$adb_tool $device_serial shell getprop`; # get device properties
+if ($output =~ m/.*\[ro.build.version.sdk\]: \[(\d+)\]/)
+{
+ $sdk_api=int($1);
+ $sdk_api=5 if ($sdk_api>5 && $sdk_api<8);
+ $sdk_api=9 if ($sdk_api>9);
+}
+
+sub reinstallQuadruplor
+{
+ pushd($quadruplor_dir);
+ system("$android_sdk_dir/tools/android update project -p . -t android-4")==0 or die "Can't update project ...\n";
+ system("$ant_tool uninstall clean debug install")==0 or die "Can't install Quadruplor\n";
+ system("$adb_tool $device_serial shell am start -n $intentName"); # create application folders
+ waitForProcess($packageName,1,10);
+ waitForProcess($packageName,0,20);
+ popd();
+}
+sub killProcess
+{
+ reinstallQuadruplor;
+# #### it seems I'm too idiot to use perl regexp
+# my $process=shift;
+# my $output = `$adb_tool $device_serial shell ps 2>&1`; # get current processes
+# $output =~ s/\r//g; # replace all "\r" with ""
+# chomp($output);
+# print $output;
+# if ($output =~ m/^.*_\d+\s+(\d+).*S $process/) # check the procress
+# {
+# print("Killing $process PID:$1\n");
+# system("$adb_tool $device_serial shell kill $1");
+# waitForProcess($process,0,20);
+# }
+# else
+# {
+# print("Can't kill the process $process\n");
+# }
+}
+
+
+sub startTest
+{
+ my $libs = shift;
+ my $mainLib = shift;
+ my $openGL = ((shift)?"true":"false");
+ system("$adb_tool $device_serial shell am start -n $intentName --ez needsOpenGl $openGL --es extra_libs \"$libs\" --es lib_name \"$mainLib\""); # start intent
+ #wait to start
+ return 0 unless(waitForProcess($packageName,1,10));
+ #wait to stop
+ unless(waitForProcess($packageName,0,$time_out,5))
+ {
+ killProcess($packageName);
+ return 1;
+ }
+ my $output_file = shift;
+ system("$adb_tool $device_serial pull /data/data/$packageName/app_files/output.xml $output_dir/$output_file");
+ return 1;
+}
+
+sub needsOpenGl
+{
+ my $app=$readelf_tool.shift.' |grep -e "^.*(NEEDED).*Shared library: \[libQtOpenGL\.so\]$"';
+ my $res=`$app`;
+ chomp $res;
+ return $res;
+}
+
+########### delpoy qt libs ###########
+if ($deploy_qt)
+{
+
+ pushd($src_dir_qt);
+ mkdir("$temp_dir/lib");
+ my @libs=`find lib -name *.so`; # libs must be handled diferently
+ foreach (@libs)
+ {
+ chomp;
+ print ("cp -L $_ $temp_dir/lib\n");
+ system("cp -L $_ $temp_dir/lib");
+ }
+ system("cp -a plugins $temp_dir");
+ system("cp -a imports $temp_dir");
+ pushd($temp_dir);
+ system("find -name *.so | xargs $strip_tool --strip-unneeded");
+ popd;
+ system("$adb_tool $device_serial shell rm -r /data/local/qt"); # remove old qt libs
+ system("$adb_tool $device_serial push $temp_dir /data/local/qt"); # copy newer qt libs
+ popd;
+}
+
+########### build & install quadruplor ###########
+reinstallQuadruplor;
+
+########### build qt tests and benchmarks ###########
+pushd($tests_dir);
+system("make distclean") if ($make_clean);
+system("$qmake_path CONFIG-=QTDIR_build -r") == 0 or die "Can't run qmake\n"; #exec qmake
+system("make -j$jobs") == 0 or warn "Can't build all tests\n"; #exec make
+my $testsFiles=`find . -name libtst_*.so`; # only tests
+foreach (split("\n",$testsFiles))
+{
+ chomp; #remove white spaces
+ pushd(abs_path(dirname($_))); # cd to application dir
+ system("make INSTALL_ROOT=$temp_dir install"); # install the application to temp dir
+ system("$adb_tool $device_serial shell rm -r /data/data/$packageName/app_files/*"); # remove old data
+ system("$adb_tool $device_serial push $temp_dir /data/data/$packageName/app_files"); # copy
+ my $application=basename(cwd);
+ my $output_name=dirname($_);
+ $output_name =~ s/\.//; # remove first "." character
+ $output_name =~ s/\///; # remove first "/" character
+ $output_name =~ s/\//_/g; # replace all "/" with "_"
+ $output_name=$application unless($output_name);
+ $time_out=5*60/5; # 5 minutes time out for a normal test
+ if (-e "$temp_dir/libtst_bench_$application.so")
+ {
+ $time_out=5*60/5; # 10 minutes for a benchmark
+ $application = "bench_$application";
+ }
+
+ if (-e "$temp_dir/libtst_$application.so")
+ {
+ if (needsOpenGl("$temp_dir/libtst_$application.so"))
+ {
+ startTest("/data/local/qt/plugins/platforms/android/libandroidGL-$sdk_api.so", "/data/data/$packageName/app_files/libtst_$application.so", 1
+ , "$output_name.xml") or warn "Can't run $application ...\n";
+ }
+ else
+ {
+ startTest("/data/local/qt/plugins/platforms/android/libandroid-$sdk_api.so", "/data/data/$packageName/app_files/libtst_$application.so", 0
+ , "$output_name.xml") or warn "Can't run $application stopping tests ...\n";
+ }
+ }
+ else
+ { #ups this test application doesn't respect name convention
+ warn "$application test application doesn't respect name convention please fix it !\n";
+ }
+ popd();
+ remove_tree( $temp_dir, {keep_root => 1} );
+}
+popd();
+
+__END__
+
+=head1 NAME
+
+Script to run all qt tests/benchmarks to an android device/emulator
+
+=head1 SYNOPSIS
+
+runtests.pl [options]
+
+=head1 OPTIONS
+
+=over 8
+
+=item B<-s --serial = serial>
+
+Device serial number. May be empty if only one device is attached.
+
+=item B<-t --test = test_subset>
+
+Tests subset (e.g. benchmarks, auto, auto/qbuffer, etc.).
+
+=item B<-d --deploy>
+
+Deploy current qt libs.
+
+=item B<-c --clean>
+
+Clean tests before building them.
+
+=item B<-j --jobs = number>
+
+Make jobs when building tests.
+
+=item B<--sdk = sdk_path>
+
+Android SDK path.
+
+=item B<--ant = ant_tool_path>
+
+Ant tool path.
+
+=item B<--strip = strip_tool_path>
+
+Android strip tool path, used to deploy qt libs.
+
+=item B<--readelf = readelf_tool_path>
+
+Android readelf tool path, used to check if a test application uses qt OpenGL.
+
+=item B<-h --help>
+
+Print a brief help message and exits.
+
+=item B<--man>
+
+Prints the manual page and exits.
+
+=back
+
+=head1 DESCRIPTION
+
+B<This program> will run all qt tests/benchmarks to an android device/emulator.
+
+=cut
diff --git a/tests/auto/android/src/org/qtproject/qt5/android/QtActivity.java b/tests/auto/android/src/org/qtproject/qt5/android/QtActivity.java
new file mode 100644
index 0000000000..ae4ca3c30a
--- /dev/null
+++ b/tests/auto/android/src/org/qtproject/qt5/android/QtActivity.java
@@ -0,0 +1,327 @@
+/*
+ Copyright (c) 2012, BogDan Vatra <bogdan@kde.org>
+ 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;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.qtproject.qt5.android.tests.R;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.text.method.MetaKeyKeyListener;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.KeyCharacterMap;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.Window;
+import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
+
+public class QtActivity extends Activity {
+ private int m_id =- 1;
+ private boolean softwareKeyboardIsVisible = false;
+ 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 boolean m_usesGL = false;
+ private void loadQtLibs(String[] libs, String environment, String params, String mainLib, String nativeLibDir) throws Exception
+ {
+ QtNative.loadQtLibraries(libs);
+ // start application
+
+ final String envPaths = "NECESSITAS_API_LEVEL=2\tHOME=" + getDir("files", MODE_WORLD_WRITEABLE).getAbsolutePath() +
+ "\tTMPDIR=" + getDir("files", MODE_WORLD_WRITEABLE).getAbsolutePath() +
+ "\tCACHE_PATH=" + getDir("files", MODE_WORLD_WRITEABLE).getAbsolutePath();
+ if (environment != null && environment.length() > 0)
+ environment = envPaths + "\t" + environment;
+ else
+ environment = envPaths;
+
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ QtNative.startApplication(params, environment, mainLib, nativeLibDir);
+ m_surface.applicationStarted(m_usesGL);
+ m_started = true;
+ }
+
+ private boolean m_quitApp = true;
+ private Process m_debuggerProcess = null; // debugger process
+
+ private void startApp(final boolean firstStart)
+ {
+ try {
+ String qtLibs[] = getResources().getStringArray(R.array.qt_libs);
+ ArrayList<String> libraryList = new ArrayList<String>();
+ for (int i = 0; i < qtLibs.length; i++)
+ libraryList.add("/data/local/qt/lib/lib" + qtLibs[i] + ".so");
+
+ String mainLib = null;
+ String nativeLibDir = null;
+ if (getIntent().getExtras() != null) {
+ if (getIntent().getExtras().containsKey("extra_libs")) {
+ String extra_libs = getIntent().getExtras().getString("extra_libs");
+ for (String lib : extra_libs.split(":"))
+ libraryList.add(lib);
+ }
+ if (getIntent().getExtras().containsKey("lib_name")) {
+ mainLib = getIntent().getExtras().getString("lib_name");
+ int slash = mainLib.lastIndexOf("/");
+ if (slash >= 0) {
+ nativeLibDir = mainLib.substring(0, slash+1);
+ mainLib = mainLib.substring(slash+1+3, mainLib.length()-3); //remove lib and .so
+ } else {
+ nativeLibDir = "";
+ }
+ }
+
+ if (getIntent().getExtras().containsKey("needsOpenGl"))
+ m_usesGL = getIntent().getExtras().getBoolean("needsOpenGl");
+ } else {
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ System.exit(0);
+ }
+ String[] libs = new String[libraryList.size()];
+ libs = libraryList.toArray(libs);
+ loadQtLibs(libs, "QML_IMPORT_PATH=/data/local/qt/imports\tQT_PLUGIN_PATH=/data/local/qt/plugins",
+ "-xml\t-silent\t-o\toutput.xml", mainLib, nativeLibDir);
+ } catch (Exception e) {
+ Log.e(QtNative.QtTAG, "Can't create main activity", e);
+ }
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ getDir("files", MODE_WORLD_WRITEABLE);
+ requestWindowFeature(Window.FEATURE_NO_TITLE);
+ m_quitApp = true;
+ QtNative.setMainActivity(this);
+ if (null == getLastNonConfigurationInstance()) {
+ DisplayMetrics metrics = new DisplayMetrics();
+ getWindowManager().getDefaultDisplay().getMetrics(metrics);
+ QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels,
+ metrics.widthPixels, metrics.heightPixels,
+ metrics.xdpi, metrics.ydpi);
+ }
+ m_surface = new QtSurface(this, m_id);
+ setContentView(m_surface);
+ if (null == getLastNonConfigurationInstance())
+ startApp(true);
+ }
+
+ public QtSurface getQtSurface()
+ {
+ return m_surface;
+ }
+
+ @Override
+ public Object onRetainNonConfigurationInstance()
+ {
+ super.onRetainNonConfigurationInstance();
+ m_quitApp = false;
+ return true;
+ }
+
+ @Override
+ protected void onDestroy()
+ {
+ QtNative.setMainActivity(null);
+ super.onDestroy();
+ if (m_quitApp) {
+ Log.i(QtNative.QtTAG, "onDestroy");
+ if (m_debuggerProcess != null)
+ m_debuggerProcess.destroy();
+ System.exit(0);// FIXME remove it or find a better way
+ }
+ QtNative.setMainActivity(null);
+ }
+
+ @Override
+ protected void onResume()
+ {
+ // fire all lostActions
+ synchronized (QtNative.m_mainActivityMutex) {
+ Iterator<Runnable> itr = QtNative.getLostActions().iterator();
+ while (itr.hasNext())
+ runOnUiThread(itr.next());
+ if (m_started) {
+ QtNative.clearLostActions();
+ QtNative.updateWindow();
+ }
+ }
+ super.onResume();
+ }
+
+ 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)
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ else
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState)
+ {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean("FullScreen", m_fullScreen);
+ outState.putBoolean("Started", m_started);
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Bundle savedInstanceState)
+ {
+ super.onRestoreInstanceState(savedInstanceState);
+ setFullScreen(savedInstanceState.getBoolean("FullScreen"));
+ m_started = savedInstanceState.getBoolean("Started");
+ if (m_started)
+ m_surface.applicationStarted(true);
+ }
+
+ public void showSoftwareKeyboard()
+ {
+ softwareKeyboardIsVisible = true;
+ InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
+ }
+
+ public void resetSoftwareKeyboard()
+ {
+ }
+
+ public void hideSoftwareKeyboard()
+ {
+ if (softwareKeyboardIsVisible) {
+ InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.toggleSoftInput(0, 0);
+ }
+ softwareKeyboardIsVisible = false;
+ }
+
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event)
+ {
+ if (m_started && event.getAction() == KeyEvent.ACTION_MULTIPLE &&
+ event.getCharacters() != null &&
+ event.getCharacters().length() == 1 &&
+ event.getKeyCode() == 0) {
+ Log.i(QtNative.QtTAG, "dispatchKeyEvent at MULTIPLE with one character: " + event.getCharacters());
+ QtNative.keyDown(0, event.getCharacters().charAt(0), event.getMetaState());
+ QtNative.keyUp(0, event.getCharacters().charAt(0), event.getMetaState());
+ }
+
+ return super.dispatchKeyEvent(event);
+ }
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event)
+ {
+ if (!m_started)
+ 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;
+ }
+
+ @Override
+ public boolean onKeyUp(int keyCode, KeyEvent event)
+ {
+ if (!m_started)
+ return false;
+ m_metaState = MetaKeyKeyListener.handleKeyUp(m_metaState, keyCode, event);
+ QtNative.keyUp(keyCode, event.getUnicodeChar(), event.getMetaState());
+ return true;
+ }
+
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ }
+
+/* public boolean onCreateOptionsMenu(Menu menu)
+ {
+ QtNative.createOptionsMenu(menu);
+ try {
+ return onPrepareOptionsMenu(menu);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ public boolean onPrepareOptionsMenu(Menu menu)
+ {
+ QtNative.prepareOptionsMenu(menu);
+ try {
+ return (Boolean) onPrepareOptionsMenu(menu);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ public boolean onOptionsItemSelected(MenuItem item)
+ {
+ return QtNative.optionsItemSelected(item.getGroupId(), item.getItemId());
+ }*/
+}
diff --git a/tests/auto/android/src/org/qtproject/qt5/android/QtInputConnection.java b/tests/auto/android/src/org/qtproject/qt5/android/QtInputConnection.java
new file mode 100644
index 0000000000..e69a03061b
--- /dev/null
+++ b/tests/auto/android/src/org/qtproject/qt5/android/QtInputConnection.java
@@ -0,0 +1,209 @@
+/*
+ Copyright (c) 2012, BogDan Vatra <bogdan@kde.org>
+ 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;
+
+import android.content.Context;
+import android.content.Intent;
+import android.text.Editable;
+import android.text.InputFilter;
+import android.util.Log;
+import android.view.KeyEvent;
+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_START_SELECTING_TEXT = android.R.id.startSelectingText;
+ private static final int ID_STOP_SELECTING_TEXT = android.R.id.stopSelectingText;
+ 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;
+
+ public QtInputConnection(View targetView)
+ {
+ super(targetView, true);
+ m_view = targetView;
+ }
+
+ @Override
+ public boolean beginBatchEdit()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean endBatchEdit()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean commitCompletion(CompletionInfo text)
+ {
+ return QtNativeInputConnection.commitCompletion(text.getText().toString(), text.getPosition());
+ }
+
+ @Override
+ public boolean commitText(CharSequence text, int newCursorPosition)
+ {
+ return QtNativeInputConnection.commitText(text.toString(), newCursorPosition);
+ }
+
+ @Override
+ public boolean deleteSurroundingText(int leftLength, int rightLength)
+ {
+ return QtNativeInputConnection.deleteSurroundingText(leftLength, rightLength);
+ }
+
+ @Override
+ public boolean finishComposingText()
+ {
+ 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/tests/auto/android/src/org/qtproject/qt5/android/QtNative.java b/tests/auto/android/src/org/qtproject/qt5/android/QtNative.java
new file mode 100644
index 0000000000..8faeabe5b0
--- /dev/null
+++ b/tests/auto/android/src/org/qtproject/qt5/android/QtNative.java
@@ -0,0 +1,421 @@
+/*
+ Copyright (c) 2012, BogDan Vatra <bogdan@kde.org>
+ 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;
+
+import java.io.File;
+import java.util.ArrayList;
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.Intent;
+import android.net.Uri;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MotionEvent;
+
+public class QtNative extends Application
+{
+ private static QtActivity m_mainActivity = null;
+ private static QtSurface m_mainView = 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<Runnable> m_lostActions = new ArrayList<Runnable>(); // 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;
+
+ public static ClassLoader classLoader()
+ {
+ return m_mainActivity.getClassLoader();
+ }
+
+ public static Activity activity()
+ {
+ return m_mainActivity;
+ }
+
+ public static QtSurface mainView()
+ {
+ return m_mainView;
+ }
+
+ 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(String[] libraries)
+ {
+ if (libraries == null)
+ return;
+
+ for (int i = 0; i < libraries.length; i++) {
+ try {
+ File f = new File(libraries[i]);
+ if (f.exists())
+ System.load(libraries[i]);
+ } catch (SecurityException e) {
+ Log.i(QtTAG, "Can't load '" + libraries[i] + "'", e);
+ } catch (Exception e) {
+ Log.i(QtTAG, "Can't load '" + libraries[i] + "'", e);
+ }
+ }
+ }
+
+ // this method loads bundled libs by name.
+ public static void loadBundledLibraries(String[] libraries)
+ {
+ for (int i = 0; i < libraries.length; i++) {
+ try {
+ System.loadLibrary(libraries[i]);
+ } catch (UnsatisfiedLinkError e) {
+ Log.i(QtTAG, "Can't load '" + libraries[i] + "'", e);
+ } catch (SecurityException e) {
+ Log.i(QtTAG, "Can't load '" + libraries[i] + "'", e);
+ } catch (Exception e) {
+ Log.i(QtTAG, "Can't load '" + libraries[i] + "'", e);
+ }
+ }
+ }
+
+ public static void setMainActivity(QtActivity qtMainActivity)
+ {
+ synchronized (m_mainActivityMutex) {
+ m_mainActivity = qtMainActivity;
+ }
+ }
+ public static void setMainView(QtSurface qtSurface)
+ {
+ synchronized (m_mainActivityMutex) {
+ m_mainView = qtSurface;
+ }
+ }
+
+ static public ArrayList<Runnable> getLostActions()
+ {
+ return m_lostActions;
+ }
+
+ static public void clearLostActions()
+ {
+ m_lostActions.clear();
+ }
+
+ private static boolean runAction(Runnable action)
+ {
+ synchronized (m_mainActivityMutex) {
+ if (m_mainActivity == null)
+ m_lostActions.add(action);
+ else
+ m_mainActivity.runOnUiThread(action);
+ return m_mainActivity != 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);
+ 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 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_mainActivity.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_mainActivity.redrawWindow(left, top, right, bottom);
+ }
+ });
+ }
+
+ @Override
+ public void onTerminate()
+ {
+ if (m_started)
+ terminateQt();
+ super.onTerminate();
+ }
+
+
+ static public void sendTouchEvent(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) > 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 showSoftwareKeyboard(final int x, final int y
+ , final int width, final int height
+ , final int inputHints )
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ m_mainActivity.showSoftwareKeyboard();
+ }
+ });
+ }
+
+ private static void resetSoftwareKeyboard()
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ m_mainActivity.resetSoftwareKeyboard();
+ }
+ });
+ }
+
+ private static void hideSoftwareKeyboard()
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ m_mainActivity.hideSoftwareKeyboard();
+ }
+ });
+ }
+
+ private static void setFullScreen(final boolean fullScreen)
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ m_mainActivity.setFullScreen(fullScreen);
+ updateWindow();
+ }
+ });
+ }
+
+ // screen methods
+ public static native void setDisplayMetrics(int screenWidthPixels,
+ int screenHeightPixels, int desktopWidthPixels,
+ int desktopHeightPixels, double XDpi, double YDpi);
+ // screen methods
+
+ private static void showOptionsMenu()
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_mainActivity != null)
+ m_mainActivity.openOptionsMenu();
+ }
+ });
+ }
+
+ private static void hideOptionsMenu()
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_mainActivity != null)
+ m_mainActivity.closeOptionsMenu();
+ }
+ });
+ }
+
+ private static void showContextMenu()
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_mainActivity != null)
+ m_mainActivity.openContextMenu(m_mainView);
+ }
+ });
+ }
+
+ private static void hideContextMenu()
+ {
+ runAction(new Runnable() {
+ @Override
+ public void run() {
+ if (m_mainActivity != null)
+ m_mainActivity.closeContextMenu();
+ }
+ });
+ }
+
+ // 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);
+ // 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
+
+ // options menu methods
+ public static native void createOptionsMenu(Menu menu);
+ public static native boolean prepareOptionsMenu(Menu menu);
+ public static native boolean optionsItemSelected(int groupId, int itemId);
+ // options menu methods
+}
diff --git a/tests/auto/android/src/org/qtproject/qt5/android/QtSurface.java b/tests/auto/android/src/org/qtproject/qt5/android/QtSurface.java
new file mode 100644
index 0000000000..7e7db031ec
--- /dev/null
+++ b/tests/auto/android/src/org/qtproject/qt5/android/QtSurface.java
@@ -0,0 +1,163 @@
+/*
+ Copyright (c) 2012, BogDan Vatra <bogdan@kde.org>
+ 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;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.PixelFormat;
+import android.graphics.Rect;
+import android.util.DisplayMetrics;
+import android.util.Log;
+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;
+ public QtSurface(Context context, int id)
+ {
+ super(context);
+ setFocusable(true);
+ getHolder().addCallback(this);
+ getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU);
+ setId(id);
+ }
+
+ 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);
+ else
+ holder.setFormat(PixelFormat.RGB_565);
+ }
+
+ @Override
+ public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
+ {
+ Log.i(QtNative.QtTAG,"surfaceChanged: "+width+","+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)
+ {
+ Log.i(QtNative.QtTAG,"surfaceDestroyed ");
+ 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());
+ return true;
+ }
+
+ @Override
+ public boolean onTrackballEvent(MotionEvent event)
+ {
+ if (!m_started)
+ return false;
+ QtNative.sendTrackballEvent(event, getId());
+ return true;
+ }
+}
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 6ff0734186..758d89ab72 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -20,5 +20,7 @@ wince*: SUBDIRS -= printsupport
cross_compile: SUBDIRS -= tools
!qtHaveModule(opengl): SUBDIRS -= opengl
!unix|embedded|!qtHaveModule(dbus): SUBDIRS -= dbus
-!qtHaveModule(widgets): SUBDIRS -= widgets printsupport
+!qtHaveModule(widgets): SUBDIRS -= widgets
+!qtHaveModule(printsupport): SUBDIRS -= printsupport
!qtHaveModule(concurrent): SUBDIRS -= concurrent
+!qtHaveModule(network): SUBDIRS -= network
diff --git a/tests/auto/bic/data/QtGui.5.0.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtGui.5.0.0.linux-gcc-amd64.txt
index 875b25ffc5..d2db7b0a8f 100644
--- a/tests/auto/bic/data/QtGui.5.0.0.linux-gcc-amd64.txt
+++ b/tests/auto/bic/data/QtGui.5.0.0.linux-gcc-amd64.txt
@@ -4198,157 +4198,6 @@ QAccessibleTableModelChangeEvent (0x7f718033a138) 0
QAccessibleEvent (0x7f7180652840) 0
primary-for QAccessibleTableModelChangeEvent (0x7f718033a138)
-Vtable for QAccessibleTextInterface
-QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
-16 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-24 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
-104 (int (*)(...))QAccessibleTextInterface::textAfterOffset
-112 (int (*)(...))QAccessibleTextInterface::textAtOffset
-120 (int (*)(...))__cxa_pure_virtual
-128 (int (*)(...))__cxa_pure_virtual
-136 (int (*)(...))__cxa_pure_virtual
-144 (int (*)(...))__cxa_pure_virtual
-152 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTextInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTextInterface (0x7f7180652900) 0 nearly-empty
- vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16u)
-
-Vtable for QAccessibleEditableTextInterface
-QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
-16 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-24 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleEditableTextInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleEditableTextInterface (0x7f7180652960) 0 nearly-empty
- vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16u)
-
-Vtable for QAccessibleValueInterface
-QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
-16 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-24 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleValueInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleValueInterface (0x7f71806529c0) 0 nearly-empty
- vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16u)
-
-Vtable for QAccessibleTableCellInterface
-QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 13u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
-16 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-24 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableCellInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTableCellInterface (0x7f7180652a20) 0 nearly-empty
- vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 16u)
-
-Vtable for QAccessibleTableInterface
-QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 23u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
-16 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-24 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))__cxa_pure_virtual
-104 (int (*)(...))__cxa_pure_virtual
-112 (int (*)(...))__cxa_pure_virtual
-120 (int (*)(...))__cxa_pure_virtual
-128 (int (*)(...))__cxa_pure_virtual
-136 (int (*)(...))__cxa_pure_virtual
-144 (int (*)(...))__cxa_pure_virtual
-152 (int (*)(...))__cxa_pure_virtual
-160 (int (*)(...))__cxa_pure_virtual
-168 (int (*)(...))__cxa_pure_virtual
-176 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTableInterface (0x7f7180652a80) 0 nearly-empty
- vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16u)
-
-Vtable for QAccessibleActionInterface
-QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
-16 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-24 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))QAccessibleActionInterface::localizedActionName
-48 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleActionInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleActionInterface (0x7f7180652ae0) 0 nearly-empty
- vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16u)
-
-Vtable for QAccessibleImageInterface
-QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
-16 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-24 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleImageInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleImageInterface (0x7f7180652b40) 0 nearly-empty
- vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16u)
-
Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0 (int (*)(...))0
diff --git a/tests/auto/bic/data/QtGui.5.0.0.linux-gcc-ia32.txt b/tests/auto/bic/data/QtGui.5.0.0.linux-gcc-ia32.txt
index cb310963bd..433c0eaacc 100644
--- a/tests/auto/bic/data/QtGui.5.0.0.linux-gcc-ia32.txt
+++ b/tests/auto/bic/data/QtGui.5.0.0.linux-gcc-ia32.txt
@@ -4198,157 +4198,6 @@ QAccessibleTableModelChangeEvent (0xb3a81bb8) 0
QAccessibleEvent (0xb39af8c0) 0
primary-for QAccessibleTableModelChangeEvent (0xb3a81bb8)
-Vtable for QAccessibleTextInterface
-QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
-8 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-12 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
-52 (int (*)(...))QAccessibleTextInterface::textAfterOffset
-56 (int (*)(...))QAccessibleTextInterface::textAtOffset
-60 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-68 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-76 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTextInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTextInterface (0xb39bbea8) 0 nearly-empty
- vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 8u)
-
-Vtable for QAccessibleEditableTextInterface
-QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
-8 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-12 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleEditableTextInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleEditableTextInterface (0xb39c80e0) 0 nearly-empty
- vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 8u)
-
-Vtable for QAccessibleValueInterface
-QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
-8 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-12 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleValueInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleValueInterface (0xb39c8348) 0 nearly-empty
- vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 8u)
-
-Vtable for QAccessibleTableCellInterface
-QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 13u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
-8 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-12 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableCellInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTableCellInterface (0xb39c85b0) 0 nearly-empty
- vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 8u)
-
-Vtable for QAccessibleTableInterface
-QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 23u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
-8 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-12 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-52 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-60 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-68 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-76 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-84 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTableInterface (0xb39c8818) 0 nearly-empty
- vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 8u)
-
-Vtable for QAccessibleActionInterface
-QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
-8 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-12 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))QAccessibleActionInterface::localizedActionName
-24 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleActionInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleActionInterface (0xb39c8a80) 0 nearly-empty
- vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 8u)
-
-Vtable for QAccessibleImageInterface
-QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
-8 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-12 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleImageInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleImageInterface (0xb39c8dc8) 0 nearly-empty
- vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 8u)
-
Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0 (int (*)(...))0
diff --git a/tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-amd64.txt
index 0f51bab46e..125e529c33 100644
--- a/tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-amd64.txt
+++ b/tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-amd64.txt
@@ -4198,157 +4198,6 @@ QAccessibleTableModelChangeEvent (0x7f04b9031138) 0
QAccessibleEvent (0x7f04b8efecc0) 0
primary-for QAccessibleTableModelChangeEvent (0x7f04b9031138)
-Vtable for QAccessibleTextInterface
-QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
-16 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-24 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
-104 (int (*)(...))QAccessibleTextInterface::textAfterOffset
-112 (int (*)(...))QAccessibleTextInterface::textAtOffset
-120 (int (*)(...))__cxa_pure_virtual
-128 (int (*)(...))__cxa_pure_virtual
-136 (int (*)(...))__cxa_pure_virtual
-144 (int (*)(...))__cxa_pure_virtual
-152 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTextInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTextInterface (0x7f04b8efed80) 0 nearly-empty
- vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16u)
-
-Vtable for QAccessibleEditableTextInterface
-QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
-16 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-24 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleEditableTextInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleEditableTextInterface (0x7f04b8efede0) 0 nearly-empty
- vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16u)
-
-Vtable for QAccessibleValueInterface
-QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
-16 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-24 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleValueInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleValueInterface (0x7f04b8efee40) 0 nearly-empty
- vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16u)
-
-Vtable for QAccessibleTableCellInterface
-QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 13u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
-16 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-24 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableCellInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTableCellInterface (0x7f04b8efeea0) 0 nearly-empty
- vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 16u)
-
-Vtable for QAccessibleTableInterface
-QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 23u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
-16 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-24 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))__cxa_pure_virtual
-104 (int (*)(...))__cxa_pure_virtual
-112 (int (*)(...))__cxa_pure_virtual
-120 (int (*)(...))__cxa_pure_virtual
-128 (int (*)(...))__cxa_pure_virtual
-136 (int (*)(...))__cxa_pure_virtual
-144 (int (*)(...))__cxa_pure_virtual
-152 (int (*)(...))__cxa_pure_virtual
-160 (int (*)(...))__cxa_pure_virtual
-168 (int (*)(...))__cxa_pure_virtual
-176 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTableInterface (0x7f04b8efef00) 0 nearly-empty
- vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16u)
-
-Vtable for QAccessibleActionInterface
-QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
-16 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-24 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))QAccessibleActionInterface::localizedActionName
-48 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleActionInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleActionInterface (0x7f04b8efef60) 0 nearly-empty
- vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16u)
-
-Vtable for QAccessibleImageInterface
-QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
-16 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-24 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleImageInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleImageInterface (0x7f04b908d000) 0 nearly-empty
- vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16u)
-
Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0 (int (*)(...))0
@@ -6303,56 +6152,6 @@ QRegExpValidator (0x7f04b7707ea0) 0
QObject (0x7f04b7a677e0) 0
primary-for QValidator (0x7f04b7707f08)
-Vtable for QAccessibleWidget
-QAccessibleWidget::_ZTV17QAccessibleWidget: 35u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI17QAccessibleWidget)
-16 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-24 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-32 (int (*)(...))QAccessibleObject::isValid
-40 (int (*)(...))QAccessibleObject::object
-48 (int (*)(...))QAccessibleWidget::window
-56 (int (*)(...))QAccessibleWidget::relations
-64 (int (*)(...))QAccessibleWidget::focusChild
-72 (int (*)(...))QAccessibleObject::childAt
-80 (int (*)(...))QAccessibleWidget::parent
-88 (int (*)(...))QAccessibleWidget::child
-96 (int (*)(...))QAccessibleWidget::childCount
-104 (int (*)(...))QAccessibleWidget::indexOfChild
-112 (int (*)(...))QAccessibleWidget::text
-120 (int (*)(...))QAccessibleObject::setText
-128 (int (*)(...))QAccessibleWidget::rect
-136 (int (*)(...))QAccessibleWidget::role
-144 (int (*)(...))QAccessibleWidget::state
-152 (int (*)(...))QAccessibleWidget::foregroundColor
-160 (int (*)(...))QAccessibleWidget::backgroundColor
-168 (int (*)(...))QAccessibleInterface::virtual_hook
-176 (int (*)(...))QAccessibleWidget::interface_cast
-184 (int (*)(...))QAccessibleWidget::actionNames
-192 (int (*)(...))QAccessibleWidget::doAction
-200 (int (*)(...))QAccessibleWidget::keyBindingsForAction
-208 (int (*)(...))-16
-216 (int (*)(...))(& _ZTI17QAccessibleWidget)
-224 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD1Ev
-232 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD0Ev
-240 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget11actionNamesEv
-248 (int (*)(...))QAccessibleActionInterface::localizedActionName
-256 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-264 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidget8doActionERK7QString
-272 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget20keyBindingsForActionERK7QString
-
-Class QAccessibleWidget
- size=32 align=8
- base size=32 base align=8
-QAccessibleWidget (0x7f04b7710bd0) 0
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 16u)
- QAccessibleObject (0x7f04b7718c98) 0
- primary-for QAccessibleWidget (0x7f04b7710bd0)
- QAccessibleInterface (0x7f04b7a678a0) 0 nearly-empty
- primary-for QAccessibleObject (0x7f04b7718c98)
- QAccessibleActionInterface (0x7f04b7a67900) 16 nearly-empty
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 224u)
-
Class QSizePolicy
size=4 align=4
base size=4 base align=4
diff --git a/tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-ia32.txt b/tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-ia32.txt
index 78509e24cc..7d8a99d222 100644
--- a/tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-ia32.txt
+++ b/tests/auto/bic/data/QtOpenGL.5.0.0.linux-gcc-ia32.txt
@@ -4198,157 +4198,6 @@ QAccessibleTableModelChangeEvent (0xb384230c) 0
QAccessibleEvent (0xb385ca48) 0
primary-for QAccessibleTableModelChangeEvent (0xb384230c)
-Vtable for QAccessibleTextInterface
-QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
-8 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-12 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
-52 (int (*)(...))QAccessibleTextInterface::textAfterOffset
-56 (int (*)(...))QAccessibleTextInterface::textAtOffset
-60 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-68 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-76 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTextInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTextInterface (0xb3871038) 0 nearly-empty
- vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 8u)
-
-Vtable for QAccessibleEditableTextInterface
-QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
-8 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-12 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleEditableTextInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleEditableTextInterface (0xb38712a0) 0 nearly-empty
- vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 8u)
-
-Vtable for QAccessibleValueInterface
-QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
-8 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-12 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleValueInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleValueInterface (0xb3871508) 0 nearly-empty
- vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 8u)
-
-Vtable for QAccessibleTableCellInterface
-QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 13u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
-8 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-12 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableCellInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTableCellInterface (0xb3871770) 0 nearly-empty
- vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 8u)
-
-Vtable for QAccessibleTableInterface
-QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 23u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
-8 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-12 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-52 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-60 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-68 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-76 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-84 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTableInterface (0xb38719d8) 0 nearly-empty
- vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 8u)
-
-Vtable for QAccessibleActionInterface
-QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
-8 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-12 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))QAccessibleActionInterface::localizedActionName
-24 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleActionInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleActionInterface (0xb3871c40) 0 nearly-empty
- vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 8u)
-
-Vtable for QAccessibleImageInterface
-QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
-8 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-12 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleImageInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleImageInterface (0xb3871f88) 0 nearly-empty
- vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 8u)
-
Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0 (int (*)(...))0
@@ -6303,56 +6152,6 @@ QRegExpValidator (0xb2afe258) 0
QObject (0xb2947460) 0
primary-for QValidator (0xb2afe294)
-Vtable for QAccessibleWidget
-QAccessibleWidget::_ZTV17QAccessibleWidget: 35u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI17QAccessibleWidget)
-8 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-12 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-16 (int (*)(...))QAccessibleObject::isValid
-20 (int (*)(...))QAccessibleObject::object
-24 (int (*)(...))QAccessibleWidget::window
-28 (int (*)(...))QAccessibleWidget::relations
-32 (int (*)(...))QAccessibleWidget::focusChild
-36 (int (*)(...))QAccessibleObject::childAt
-40 (int (*)(...))QAccessibleWidget::parent
-44 (int (*)(...))QAccessibleWidget::child
-48 (int (*)(...))QAccessibleWidget::childCount
-52 (int (*)(...))QAccessibleWidget::indexOfChild
-56 (int (*)(...))QAccessibleWidget::text
-60 (int (*)(...))QAccessibleObject::setText
-64 (int (*)(...))QAccessibleWidget::rect
-68 (int (*)(...))QAccessibleWidget::role
-72 (int (*)(...))QAccessibleWidget::state
-76 (int (*)(...))QAccessibleWidget::foregroundColor
-80 (int (*)(...))QAccessibleWidget::backgroundColor
-84 (int (*)(...))QAccessibleInterface::virtual_hook
-88 (int (*)(...))QAccessibleWidget::interface_cast
-92 (int (*)(...))QAccessibleWidget::actionNames
-96 (int (*)(...))QAccessibleWidget::doAction
-100 (int (*)(...))QAccessibleWidget::keyBindingsForAction
-104 (int (*)(...))-0x00000000000000008
-108 (int (*)(...))(& _ZTI17QAccessibleWidget)
-112 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidgetD1Ev
-116 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidgetD0Ev
-120 (int (*)(...))QAccessibleWidget::_ZThn8_NK17QAccessibleWidget11actionNamesEv
-124 (int (*)(...))QAccessibleActionInterface::localizedActionName
-128 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-132 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidget8doActionERK7QString
-136 (int (*)(...))QAccessibleWidget::_ZThn8_NK17QAccessibleWidget20keyBindingsForActionERK7QString
-
-Class QAccessibleWidget
- size=16 align=4
- base size=16 base align=4
-QAccessibleWidget (0xb294a300) 0
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 8u)
- QAccessibleObject (0xb2afe2d0) 0
- primary-for QAccessibleWidget (0xb294a300)
- QAccessibleInterface (0xb2947d90) 0 nearly-empty
- primary-for QAccessibleObject (0xb2afe2d0)
- QAccessibleActionInterface (0xb2947dc8) 8 nearly-empty
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 112u)
-
Class QSizePolicy
size=4 align=4
base size=4 base align=4
diff --git a/tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-amd64.txt
index bcdbbaf895..20988597b1 100644
--- a/tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-amd64.txt
+++ b/tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-amd64.txt
@@ -4203,157 +4203,6 @@ QAccessibleTableModelChangeEvent (0x7f0bd5f7e138) 0
QAccessibleEvent (0x7f0bd5e7e8a0) 0
primary-for QAccessibleTableModelChangeEvent (0x7f0bd5f7e138)
-Vtable for QAccessibleTextInterface
-QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
-16 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-24 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
-104 (int (*)(...))QAccessibleTextInterface::textAfterOffset
-112 (int (*)(...))QAccessibleTextInterface::textAtOffset
-120 (int (*)(...))__cxa_pure_virtual
-128 (int (*)(...))__cxa_pure_virtual
-136 (int (*)(...))__cxa_pure_virtual
-144 (int (*)(...))__cxa_pure_virtual
-152 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTextInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTextInterface (0x7f0bd5e7e960) 0 nearly-empty
- vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16u)
-
-Vtable for QAccessibleEditableTextInterface
-QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
-16 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-24 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleEditableTextInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleEditableTextInterface (0x7f0bd5e7e9c0) 0 nearly-empty
- vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16u)
-
-Vtable for QAccessibleValueInterface
-QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
-16 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-24 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleValueInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleValueInterface (0x7f0bd5e7ea20) 0 nearly-empty
- vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16u)
-
-Vtable for QAccessibleTableCellInterface
-QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 13u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
-16 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-24 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableCellInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTableCellInterface (0x7f0bd5e7ea80) 0 nearly-empty
- vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 16u)
-
-Vtable for QAccessibleTableInterface
-QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 23u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
-16 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-24 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))__cxa_pure_virtual
-104 (int (*)(...))__cxa_pure_virtual
-112 (int (*)(...))__cxa_pure_virtual
-120 (int (*)(...))__cxa_pure_virtual
-128 (int (*)(...))__cxa_pure_virtual
-136 (int (*)(...))__cxa_pure_virtual
-144 (int (*)(...))__cxa_pure_virtual
-152 (int (*)(...))__cxa_pure_virtual
-160 (int (*)(...))__cxa_pure_virtual
-168 (int (*)(...))__cxa_pure_virtual
-176 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTableInterface (0x7f0bd5e7eae0) 0 nearly-empty
- vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16u)
-
-Vtable for QAccessibleActionInterface
-QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
-16 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-24 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))QAccessibleActionInterface::localizedActionName
-48 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleActionInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleActionInterface (0x7f0bd5e7eb40) 0 nearly-empty
- vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16u)
-
-Vtable for QAccessibleImageInterface
-QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
-16 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-24 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleImageInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleImageInterface (0x7f0bd5e7eba0) 0 nearly-empty
- vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16u)
-
Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0 (int (*)(...))0
@@ -6308,56 +6157,6 @@ QRegExpValidator (0x7f0bd4652ea0) 0
QObject (0x7f0bd46103c0) 0
primary-for QValidator (0x7f0bd4652f08)
-Vtable for QAccessibleWidget
-QAccessibleWidget::_ZTV17QAccessibleWidget: 35u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI17QAccessibleWidget)
-16 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-24 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-32 (int (*)(...))QAccessibleObject::isValid
-40 (int (*)(...))QAccessibleObject::object
-48 (int (*)(...))QAccessibleWidget::window
-56 (int (*)(...))QAccessibleWidget::relations
-64 (int (*)(...))QAccessibleWidget::focusChild
-72 (int (*)(...))QAccessibleObject::childAt
-80 (int (*)(...))QAccessibleWidget::parent
-88 (int (*)(...))QAccessibleWidget::child
-96 (int (*)(...))QAccessibleWidget::childCount
-104 (int (*)(...))QAccessibleWidget::indexOfChild
-112 (int (*)(...))QAccessibleWidget::text
-120 (int (*)(...))QAccessibleObject::setText
-128 (int (*)(...))QAccessibleWidget::rect
-136 (int (*)(...))QAccessibleWidget::role
-144 (int (*)(...))QAccessibleWidget::state
-152 (int (*)(...))QAccessibleWidget::foregroundColor
-160 (int (*)(...))QAccessibleWidget::backgroundColor
-168 (int (*)(...))QAccessibleInterface::virtual_hook
-176 (int (*)(...))QAccessibleWidget::interface_cast
-184 (int (*)(...))QAccessibleWidget::actionNames
-192 (int (*)(...))QAccessibleWidget::doAction
-200 (int (*)(...))QAccessibleWidget::keyBindingsForAction
-208 (int (*)(...))-16
-216 (int (*)(...))(& _ZTI17QAccessibleWidget)
-224 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD1Ev
-232 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD0Ev
-240 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget11actionNamesEv
-248 (int (*)(...))QAccessibleActionInterface::localizedActionName
-256 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-264 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidget8doActionERK7QString
-272 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget20keyBindingsForActionERK7QString
-
-Class QAccessibleWidget
- size=32 align=8
- base size=32 base align=8
-QAccessibleWidget (0x7f0bd465cbd0) 0
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 16u)
- QAccessibleObject (0x7f0bd4665c98) 0
- primary-for QAccessibleWidget (0x7f0bd465cbd0)
- QAccessibleInterface (0x7f0bd4610480) 0 nearly-empty
- primary-for QAccessibleObject (0x7f0bd4665c98)
- QAccessibleActionInterface (0x7f0bd46104e0) 16 nearly-empty
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 224u)
-
Class QSizePolicy
size=4 align=4
base size=4 base align=4
diff --git a/tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-ia32.txt b/tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-ia32.txt
index 19cbef7918..6162fcde57 100644
--- a/tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-ia32.txt
+++ b/tests/auto/bic/data/QtPrintSupport.5.0.0.linux-gcc-ia32.txt
@@ -4198,157 +4198,6 @@ QAccessibleTableModelChangeEvent (0xb3b22ca8) 0
QAccessibleEvent (0xb384fa48) 0
primary-for QAccessibleTableModelChangeEvent (0xb3b22ca8)
-Vtable for QAccessibleTextInterface
-QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
-8 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-12 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
-52 (int (*)(...))QAccessibleTextInterface::textAfterOffset
-56 (int (*)(...))QAccessibleTextInterface::textAtOffset
-60 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-68 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-76 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTextInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTextInterface (0xb3864038) 0 nearly-empty
- vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 8u)
-
-Vtable for QAccessibleEditableTextInterface
-QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
-8 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-12 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleEditableTextInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleEditableTextInterface (0xb38642a0) 0 nearly-empty
- vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 8u)
-
-Vtable for QAccessibleValueInterface
-QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
-8 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-12 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleValueInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleValueInterface (0xb3864508) 0 nearly-empty
- vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 8u)
-
-Vtable for QAccessibleTableCellInterface
-QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 13u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
-8 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-12 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableCellInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTableCellInterface (0xb3864770) 0 nearly-empty
- vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 8u)
-
-Vtable for QAccessibleTableInterface
-QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 23u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
-8 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-12 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-52 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-60 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-68 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-76 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-84 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTableInterface (0xb38649d8) 0 nearly-empty
- vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 8u)
-
-Vtable for QAccessibleActionInterface
-QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
-8 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-12 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))QAccessibleActionInterface::localizedActionName
-24 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleActionInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleActionInterface (0xb3864c40) 0 nearly-empty
- vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 8u)
-
-Vtable for QAccessibleImageInterface
-QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
-8 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-12 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleImageInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleImageInterface (0xb3864f88) 0 nearly-empty
- vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 8u)
-
Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0 (int (*)(...))0
@@ -6303,56 +6152,6 @@ QRegExpValidator (0xb2ea6bf4) 0
QObject (0xb293a460) 0
primary-for QValidator (0xb2ea6c30)
-Vtable for QAccessibleWidget
-QAccessibleWidget::_ZTV17QAccessibleWidget: 35u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI17QAccessibleWidget)
-8 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-12 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-16 (int (*)(...))QAccessibleObject::isValid
-20 (int (*)(...))QAccessibleObject::object
-24 (int (*)(...))QAccessibleWidget::window
-28 (int (*)(...))QAccessibleWidget::relations
-32 (int (*)(...))QAccessibleWidget::focusChild
-36 (int (*)(...))QAccessibleObject::childAt
-40 (int (*)(...))QAccessibleWidget::parent
-44 (int (*)(...))QAccessibleWidget::child
-48 (int (*)(...))QAccessibleWidget::childCount
-52 (int (*)(...))QAccessibleWidget::indexOfChild
-56 (int (*)(...))QAccessibleWidget::text
-60 (int (*)(...))QAccessibleObject::setText
-64 (int (*)(...))QAccessibleWidget::rect
-68 (int (*)(...))QAccessibleWidget::role
-72 (int (*)(...))QAccessibleWidget::state
-76 (int (*)(...))QAccessibleWidget::foregroundColor
-80 (int (*)(...))QAccessibleWidget::backgroundColor
-84 (int (*)(...))QAccessibleInterface::virtual_hook
-88 (int (*)(...))QAccessibleWidget::interface_cast
-92 (int (*)(...))QAccessibleWidget::actionNames
-96 (int (*)(...))QAccessibleWidget::doAction
-100 (int (*)(...))QAccessibleWidget::keyBindingsForAction
-104 (int (*)(...))-0x00000000000000008
-108 (int (*)(...))(& _ZTI17QAccessibleWidget)
-112 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidgetD1Ev
-116 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidgetD0Ev
-120 (int (*)(...))QAccessibleWidget::_ZThn8_NK17QAccessibleWidget11actionNamesEv
-124 (int (*)(...))QAccessibleActionInterface::localizedActionName
-128 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-132 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidget8doActionERK7QString
-136 (int (*)(...))QAccessibleWidget::_ZThn8_NK17QAccessibleWidget20keyBindingsForActionERK7QString
-
-Class QAccessibleWidget
- size=16 align=4
- base size=16 base align=4
-QAccessibleWidget (0xb293c300) 0
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 8u)
- QAccessibleObject (0xb2ea6c6c) 0
- primary-for QAccessibleWidget (0xb293c300)
- QAccessibleInterface (0xb293ad90) 0 nearly-empty
- primary-for QAccessibleObject (0xb2ea6c6c)
- QAccessibleActionInterface (0xb293adc8) 8 nearly-empty
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 112u)
-
Class QSizePolicy
size=4 align=4
base size=4 base align=4
diff --git a/tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-amd64.txt b/tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-amd64.txt
index 25e4d7d84e..35a4d3a30a 100644
--- a/tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-amd64.txt
+++ b/tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-amd64.txt
@@ -4198,157 +4198,6 @@ QAccessibleTableModelChangeEvent (0x7f871fb16138) 0
QAccessibleEvent (0x7f871fa158a0) 0
primary-for QAccessibleTableModelChangeEvent (0x7f871fb16138)
-Vtable for QAccessibleTextInterface
-QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
-16 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-24 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
-104 (int (*)(...))QAccessibleTextInterface::textAfterOffset
-112 (int (*)(...))QAccessibleTextInterface::textAtOffset
-120 (int (*)(...))__cxa_pure_virtual
-128 (int (*)(...))__cxa_pure_virtual
-136 (int (*)(...))__cxa_pure_virtual
-144 (int (*)(...))__cxa_pure_virtual
-152 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTextInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTextInterface (0x7f871fa15960) 0 nearly-empty
- vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 16u)
-
-Vtable for QAccessibleEditableTextInterface
-QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
-16 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-24 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleEditableTextInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleEditableTextInterface (0x7f871fa159c0) 0 nearly-empty
- vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 16u)
-
-Vtable for QAccessibleValueInterface
-QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
-16 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-24 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleValueInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleValueInterface (0x7f871fa15a20) 0 nearly-empty
- vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 16u)
-
-Vtable for QAccessibleTableCellInterface
-QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 13u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
-16 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-24 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableCellInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTableCellInterface (0x7f871fa15a80) 0 nearly-empty
- vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 16u)
-
-Vtable for QAccessibleTableInterface
-QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 23u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
-16 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-24 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-96 (int (*)(...))__cxa_pure_virtual
-104 (int (*)(...))__cxa_pure_virtual
-112 (int (*)(...))__cxa_pure_virtual
-120 (int (*)(...))__cxa_pure_virtual
-128 (int (*)(...))__cxa_pure_virtual
-136 (int (*)(...))__cxa_pure_virtual
-144 (int (*)(...))__cxa_pure_virtual
-152 (int (*)(...))__cxa_pure_virtual
-160 (int (*)(...))__cxa_pure_virtual
-168 (int (*)(...))__cxa_pure_virtual
-176 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleTableInterface (0x7f871fa15ae0) 0 nearly-empty
- vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 16u)
-
-Vtable for QAccessibleActionInterface
-QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
-16 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-24 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))QAccessibleActionInterface::localizedActionName
-48 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-56 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleActionInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleActionInterface (0x7f871fa15b40) 0 nearly-empty
- vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 16u)
-
-Vtable for QAccessibleImageInterface
-QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
-16 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-24 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-32 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleImageInterface
- size=8 align=8
- base size=8 base align=8
-QAccessibleImageInterface (0x7f871fa15ba0) 0 nearly-empty
- vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 16u)
-
Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0 (int (*)(...))0
@@ -6303,56 +6152,6 @@ QRegExpValidator (0x7f871e1ecea0) 0
QObject (0x7f871e1a93c0) 0
primary-for QValidator (0x7f871e1ecf08)
-Vtable for QAccessibleWidget
-QAccessibleWidget::_ZTV17QAccessibleWidget: 35u entries
-0 (int (*)(...))0
-8 (int (*)(...))(& _ZTI17QAccessibleWidget)
-16 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-24 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-32 (int (*)(...))QAccessibleObject::isValid
-40 (int (*)(...))QAccessibleObject::object
-48 (int (*)(...))QAccessibleWidget::window
-56 (int (*)(...))QAccessibleWidget::relations
-64 (int (*)(...))QAccessibleWidget::focusChild
-72 (int (*)(...))QAccessibleObject::childAt
-80 (int (*)(...))QAccessibleWidget::parent
-88 (int (*)(...))QAccessibleWidget::child
-96 (int (*)(...))QAccessibleWidget::childCount
-104 (int (*)(...))QAccessibleWidget::indexOfChild
-112 (int (*)(...))QAccessibleWidget::text
-120 (int (*)(...))QAccessibleObject::setText
-128 (int (*)(...))QAccessibleWidget::rect
-136 (int (*)(...))QAccessibleWidget::role
-144 (int (*)(...))QAccessibleWidget::state
-152 (int (*)(...))QAccessibleWidget::foregroundColor
-160 (int (*)(...))QAccessibleWidget::backgroundColor
-168 (int (*)(...))QAccessibleInterface::virtual_hook
-176 (int (*)(...))QAccessibleWidget::interface_cast
-184 (int (*)(...))QAccessibleWidget::actionNames
-192 (int (*)(...))QAccessibleWidget::doAction
-200 (int (*)(...))QAccessibleWidget::keyBindingsForAction
-208 (int (*)(...))-16
-216 (int (*)(...))(& _ZTI17QAccessibleWidget)
-224 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD1Ev
-232 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidgetD0Ev
-240 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget11actionNamesEv
-248 (int (*)(...))QAccessibleActionInterface::localizedActionName
-256 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-264 (int (*)(...))QAccessibleWidget::_ZThn16_N17QAccessibleWidget8doActionERK7QString
-272 (int (*)(...))QAccessibleWidget::_ZThn16_NK17QAccessibleWidget20keyBindingsForActionERK7QString
-
-Class QAccessibleWidget
- size=32 align=8
- base size=32 base align=8
-QAccessibleWidget (0x7f871e1f7bd0) 0
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 16u)
- QAccessibleObject (0x7f871e200c98) 0
- primary-for QAccessibleWidget (0x7f871e1f7bd0)
- QAccessibleInterface (0x7f871e1a9480) 0 nearly-empty
- primary-for QAccessibleObject (0x7f871e200c98)
- QAccessibleActionInterface (0x7f871e1a94e0) 16 nearly-empty
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 224u)
-
Class QSizePolicy
size=4 align=4
base size=4 base align=4
diff --git a/tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-ia32.txt b/tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-ia32.txt
index 64234d8c58..fe8f00314f 100644
--- a/tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-ia32.txt
+++ b/tests/auto/bic/data/QtWidgets.5.0.0.linux-gcc-ia32.txt
@@ -4198,157 +4198,6 @@ QAccessibleTableModelChangeEvent (0xb3ae3ca8) 0
QAccessibleEvent (0xb3811a48) 0
primary-for QAccessibleTableModelChangeEvent (0xb3ae3ca8)
-Vtable for QAccessibleTextInterface
-QAccessibleTextInterface::_ZTV24QAccessibleTextInterface: 20u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI24QAccessibleTextInterface)
-8 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-12 (int (*)(...))QAccessibleTextInterface::~QAccessibleTextInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))QAccessibleTextInterface::textBeforeOffset
-52 (int (*)(...))QAccessibleTextInterface::textAfterOffset
-56 (int (*)(...))QAccessibleTextInterface::textAtOffset
-60 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-68 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-76 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTextInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTextInterface (0xb3825038) 0 nearly-empty
- vptr=((& QAccessibleTextInterface::_ZTV24QAccessibleTextInterface) + 8u)
-
-Vtable for QAccessibleEditableTextInterface
-QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface: 7u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI32QAccessibleEditableTextInterface)
-8 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-12 (int (*)(...))QAccessibleEditableTextInterface::~QAccessibleEditableTextInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleEditableTextInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleEditableTextInterface (0xb38252a0) 0 nearly-empty
- vptr=((& QAccessibleEditableTextInterface::_ZTV32QAccessibleEditableTextInterface) + 8u)
-
-Vtable for QAccessibleValueInterface
-QAccessibleValueInterface::_ZTV25QAccessibleValueInterface: 9u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleValueInterface)
-8 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-12 (int (*)(...))QAccessibleValueInterface::~QAccessibleValueInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleValueInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleValueInterface (0xb3825508) 0 nearly-empty
- vptr=((& QAccessibleValueInterface::_ZTV25QAccessibleValueInterface) + 8u)
-
-Vtable for QAccessibleTableCellInterface
-QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface: 13u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI29QAccessibleTableCellInterface)
-8 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-12 (int (*)(...))QAccessibleTableCellInterface::~QAccessibleTableCellInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableCellInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTableCellInterface (0xb3825770) 0 nearly-empty
- vptr=((& QAccessibleTableCellInterface::_ZTV29QAccessibleTableCellInterface) + 8u)
-
-Vtable for QAccessibleTableInterface
-QAccessibleTableInterface::_ZTV25QAccessibleTableInterface: 23u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleTableInterface)
-8 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-12 (int (*)(...))QAccessibleTableInterface::~QAccessibleTableInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-36 (int (*)(...))__cxa_pure_virtual
-40 (int (*)(...))__cxa_pure_virtual
-44 (int (*)(...))__cxa_pure_virtual
-48 (int (*)(...))__cxa_pure_virtual
-52 (int (*)(...))__cxa_pure_virtual
-56 (int (*)(...))__cxa_pure_virtual
-60 (int (*)(...))__cxa_pure_virtual
-64 (int (*)(...))__cxa_pure_virtual
-68 (int (*)(...))__cxa_pure_virtual
-72 (int (*)(...))__cxa_pure_virtual
-76 (int (*)(...))__cxa_pure_virtual
-80 (int (*)(...))__cxa_pure_virtual
-84 (int (*)(...))__cxa_pure_virtual
-88 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleTableInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleTableInterface (0xb38259d8) 0 nearly-empty
- vptr=((& QAccessibleTableInterface::_ZTV25QAccessibleTableInterface) + 8u)
-
-Vtable for QAccessibleActionInterface
-QAccessibleActionInterface::_ZTV26QAccessibleActionInterface: 9u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI26QAccessibleActionInterface)
-8 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-12 (int (*)(...))QAccessibleActionInterface::~QAccessibleActionInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))QAccessibleActionInterface::localizedActionName
-24 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-28 (int (*)(...))__cxa_pure_virtual
-32 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleActionInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleActionInterface (0xb3825c40) 0 nearly-empty
- vptr=((& QAccessibleActionInterface::_ZTV26QAccessibleActionInterface) + 8u)
-
-Vtable for QAccessibleImageInterface
-QAccessibleImageInterface::_ZTV25QAccessibleImageInterface: 7u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI25QAccessibleImageInterface)
-8 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-12 (int (*)(...))QAccessibleImageInterface::~QAccessibleImageInterface
-16 (int (*)(...))__cxa_pure_virtual
-20 (int (*)(...))__cxa_pure_virtual
-24 (int (*)(...))__cxa_pure_virtual
-
-Class QAccessibleImageInterface
- size=4 align=4
- base size=4 base align=4
-QAccessibleImageInterface (0xb3825f88) 0 nearly-empty
- vptr=((& QAccessibleImageInterface::_ZTV25QAccessibleImageInterface) + 8u)
-
Vtable for QAccessibleBridge
QAccessibleBridge::_ZTV17QAccessibleBridge: 6u entries
0 (int (*)(...))0
@@ -6303,56 +6152,6 @@ QRegExpValidator (0xb2e67bf4) 0
QObject (0xb28fc460) 0
primary-for QValidator (0xb2e67c30)
-Vtable for QAccessibleWidget
-QAccessibleWidget::_ZTV17QAccessibleWidget: 35u entries
-0 (int (*)(...))0
-4 (int (*)(...))(& _ZTI17QAccessibleWidget)
-8 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-12 (int (*)(...))QAccessibleWidget::~QAccessibleWidget
-16 (int (*)(...))QAccessibleObject::isValid
-20 (int (*)(...))QAccessibleObject::object
-24 (int (*)(...))QAccessibleWidget::window
-28 (int (*)(...))QAccessibleWidget::relations
-32 (int (*)(...))QAccessibleWidget::focusChild
-36 (int (*)(...))QAccessibleObject::childAt
-40 (int (*)(...))QAccessibleWidget::parent
-44 (int (*)(...))QAccessibleWidget::child
-48 (int (*)(...))QAccessibleWidget::childCount
-52 (int (*)(...))QAccessibleWidget::indexOfChild
-56 (int (*)(...))QAccessibleWidget::text
-60 (int (*)(...))QAccessibleObject::setText
-64 (int (*)(...))QAccessibleWidget::rect
-68 (int (*)(...))QAccessibleWidget::role
-72 (int (*)(...))QAccessibleWidget::state
-76 (int (*)(...))QAccessibleWidget::foregroundColor
-80 (int (*)(...))QAccessibleWidget::backgroundColor
-84 (int (*)(...))QAccessibleInterface::virtual_hook
-88 (int (*)(...))QAccessibleWidget::interface_cast
-92 (int (*)(...))QAccessibleWidget::actionNames
-96 (int (*)(...))QAccessibleWidget::doAction
-100 (int (*)(...))QAccessibleWidget::keyBindingsForAction
-104 (int (*)(...))-0x00000000000000008
-108 (int (*)(...))(& _ZTI17QAccessibleWidget)
-112 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidgetD1Ev
-116 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidgetD0Ev
-120 (int (*)(...))QAccessibleWidget::_ZThn8_NK17QAccessibleWidget11actionNamesEv
-124 (int (*)(...))QAccessibleActionInterface::localizedActionName
-128 (int (*)(...))QAccessibleActionInterface::localizedActionDescription
-132 (int (*)(...))QAccessibleWidget::_ZThn8_N17QAccessibleWidget8doActionERK7QString
-136 (int (*)(...))QAccessibleWidget::_ZThn8_NK17QAccessibleWidget20keyBindingsForActionERK7QString
-
-Class QAccessibleWidget
- size=16 align=4
- base size=16 base align=4
-QAccessibleWidget (0xb28fd300) 0
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 8u)
- QAccessibleObject (0xb2e67c6c) 0
- primary-for QAccessibleWidget (0xb28fd300)
- QAccessibleInterface (0xb28fcd90) 0 nearly-empty
- primary-for QAccessibleObject (0xb2e67c6c)
- QAccessibleActionInterface (0xb28fcdc8) 8 nearly-empty
- vptr=((& QAccessibleWidget::_ZTV17QAccessibleWidget) + 112u)
-
Class QSizePolicy
size=4 align=4
base size=4 base align=4
diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt
index 7be3116cbd..8f97c0eb7a 100644
--- a/tests/auto/cmake/CMakeLists.txt
+++ b/tests/auto/cmake/CMakeLists.txt
@@ -51,9 +51,11 @@ if(NOT ${CMAKE_VERSION} VERSION_LESS 2.8.9)
# Requires INCLUDE_DIRECTORIES target property in CMake 2.8.8
# and POSITION_INDEPENDENT_CODE target property in 2.8.9
expect_pass(test_use_modules_function)
+ expect_pass(test_umbrella_config)
else()
- message("CMake version older than 2.8.9 (Found ${CMAKE_VERSION}). Not running test \"test_use_modules_function\"")
+ message("CMake version older than 2.8.9 (Found ${CMAKE_VERSION}). Not running test \"test_use_modules_function\" or \"test_umbrella_config\"")
endif()
+
expect_pass(test_wrap_cpp_and_resources)
if (NOT NO_WIDGETS)
expect_pass(test_dependent_modules)
@@ -118,3 +120,4 @@ test_module_includes(
${qt_module_includes}
)
expect_pass(test_concurrent_module)
+expect_pass(test_openglextensions_module)
diff --git a/tests/auto/cmake/test_openglextensions_module/CMakeLists.txt b/tests/auto/cmake/test_openglextensions_module/CMakeLists.txt
new file mode 100644
index 0000000000..3c23bce2bd
--- /dev/null
+++ b/tests/auto/cmake/test_openglextensions_module/CMakeLists.txt
@@ -0,0 +1,22 @@
+
+cmake_minimum_required(VERSION 2.8)
+
+project(test_openglextensions_module)
+
+find_package(Qt5OpenGLExtensions 5.1.0 REQUIRED)
+
+include_directories(
+ ${Qt5OpenGLExtensions_INCLUDE_DIRS}
+)
+
+add_definitions(
+ ${Qt5OpenGLExtensions_DEFINITIONS}
+)
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5OpenGLExtensions_EXECUTABLE_COMPILE_FLAGS}")
+
+add_executable(mainapp main.cpp)
+
+target_link_libraries(mainapp
+ ${Qt5OpenGLExtensions_LIBRARIES}
+)
diff --git a/tests/auto/cmake/test_openglextensions_module/main.cpp b/tests/auto/cmake/test_openglextensions_module/main.cpp
new file mode 100644
index 0000000000..cb4847a691
--- /dev/null
+++ b/tests/auto/cmake/test_openglextensions_module/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <QtOpenGLExtensions>
+#include <QtOpenGLExtensions/QtOpenGLExtensions>
+#include <QtOpenGLExtensions/QOpenGLExtensions>
+#include <QOpenGLExtensions>
+
+int main(int argc, char **argv)
+{
+#if defined(QT_OPENGL_ES_2)
+ QOpenGLExtension_OES_vertex_array_object obj;
+#else
+ QOpenGLExtension_ARB_draw_buffers obj;
+#endif
+
+ return 0;
+}
diff --git a/tests/auto/cmake/test_umbrella_config/CMakeLists.txt b/tests/auto/cmake/test_umbrella_config/CMakeLists.txt
new file mode 100644
index 0000000000..a8fc2b53ed
--- /dev/null
+++ b/tests/auto/cmake/test_umbrella_config/CMakeLists.txt
@@ -0,0 +1,20 @@
+
+cmake_minimum_required(VERSION 2.8)
+
+project(test_umbrella_config)
+
+add_subdirectory(components_found)
+
+if (Qt5_FOUND)
+ message(SEND_ERROR "Qt5_FOUND variable leaked!")
+endif()
+
+if (Qt5Core_FOUND)
+ message(SEND_ERROR "Qt5Core_FOUND variable leaked!")
+endif()
+
+if (TARGET Qt5::Core)
+ message(SEND_ERROR "Qt5::Core target leaked!")
+endif()
+
+add_subdirectory(components_not_found)
diff --git a/tests/auto/cmake/test_umbrella_config/components_found/CMakeLists.txt b/tests/auto/cmake/test_umbrella_config/components_found/CMakeLists.txt
new file mode 100644
index 0000000000..2099e36068
--- /dev/null
+++ b/tests/auto/cmake/test_umbrella_config/components_found/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+# The module finds its dependencies
+find_package(Qt5 5.1.0
+ COMPONENTS Core
+ OPTIONAL_COMPONENTS DoesNotExist
+)
+
+if (NOT Qt5_FOUND)
+ message(SEND_ERROR "Qt5 umbrella package not found!")
+endif()
+
+if (NOT Qt5Core_FOUND)
+ message(SEND_ERROR "Qt5Core package not found!")
+endif()
+
+if (Qt5DoesNotExist_FOUND)
+ message(SEND_ERROR "Non-existent package found!")
+endif()
diff --git a/tests/auto/cmake/test_umbrella_config/components_not_found/CMakeLists.txt b/tests/auto/cmake/test_umbrella_config/components_not_found/CMakeLists.txt
new file mode 100644
index 0000000000..424c3e3445
--- /dev/null
+++ b/tests/auto/cmake/test_umbrella_config/components_not_found/CMakeLists.txt
@@ -0,0 +1,17 @@
+
+# The module finds its dependencies
+find_package(Qt5
+ COMPONENTS Core DoesNotExist
+)
+
+if (Qt5_FOUND)
+ message(SEND_ERROR "Qt5 umbrella package found, though it should not be!")
+endif()
+
+if (NOT Qt5Core_FOUND)
+ message(SEND_ERROR "Qt5Core package not found!")
+endif()
+
+if (Qt5DoesNotExist_FOUND)
+ message(SEND_ERROR "Non-existent package found!")
+endif()
diff --git a/tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp b/tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
index 69d1535ccf..4ce11f208f 100644
--- a/tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
+++ b/tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
@@ -100,7 +100,6 @@ void tst_QtConcurrentFilter::filter()
QCOMPARE(vector, QVector<int>() << 2 << 4);
}
-
// function
{
QList<int> list;
@@ -554,7 +553,6 @@ void tst_QtConcurrentFilter::filteredReduced()
int sum = QtConcurrent::filteredReduced<int>(vector, KeepEvenIntegers(), IntSumReduce());
QCOMPARE(sum, 6);
}
-
{
int sum = QtConcurrent::filteredReduced<int>(list.begin(),
list.end(),
@@ -1396,43 +1394,42 @@ void tst_QtConcurrentFilter::filteredReduced()
// ### the same as above, with an initial result value
}
-bool filterfn(int i)
-{
+bool filterfn(int i)
+{
return (i % 2);
-}
+}
void tst_QtConcurrentFilter::resultAt()
{
- QList<int> ints;
+ QList<int> ints;
for (int i=0; i < 1000; ++i)
ints << i;
QFuture<int> future = QtConcurrent::filtered(ints, filterfn);
- future.waitForFinished();
+ future.waitForFinished();
-
for (int i = 0; i < future.resultCount(); ++i) {
QCOMPARE(future.resultAt(i), ints.at(i * 2 + 1));
}
}
-bool waitFilterfn(const int &i)
-{
+bool waitFilterfn(const int &i)
+{
QTest::qWait(1);
return (i % 2);
-}
+}
void tst_QtConcurrentFilter::incrementalResults()
{
const int count = 200;
- QList<int> ints;
+ QList<int> ints;
for (int i=0; i < count; ++i)
ints << i;
QFuture<int> future = QtConcurrent::filtered(ints, waitFilterfn);
-
+
QList<int> results;
while (future.isFinished() == false) {
diff --git a/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp b/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
index 3613e8df60..33133e876f 100644
--- a/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
+++ b/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
@@ -112,7 +112,7 @@ public:
return false;
}
bool runIteration(TestIterator it, int index , void *result)
- {
+ {
return runIterations(it, index, index + 1, result);
}
@@ -132,7 +132,7 @@ public:
return false;
}
bool runIteration(TestIterator it, int index , void *result)
- {
+ {
return runIterations(it, index, index + 1, result);
}
};
@@ -166,7 +166,7 @@ public:
return false;
}
bool runIteration(TestIterator it, int index , void *result)
- {
+ {
return runIterations(it, index, index + 1, result);
}
};
@@ -217,13 +217,13 @@ public:
if (100 >= begin && 100 < end) {
throttling = true;
}
-
+
QTest::qWait(1);
return false;
}
bool runIteration(TestIterator it, int index , void *result)
- {
+ {
return runIterations(it, index, index + 1, result);
}
diff --git a/tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp b/tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
index eeacf2ccbb..1743ec3459 100644
--- a/tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
+++ b/tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
@@ -2226,12 +2226,12 @@ int mapper(const int &i)
void tst_QtConcurrentMap::incrementalResults()
{
const int count = 200;
- QList<int> ints;
+ QList<int> ints;
for (int i=0; i < count; ++i)
ints << i;
QFuture<int> future = QtConcurrent::mapped(ints, mapper);
-
+
QList<int> results;
while (future.isFinished() == false) {
@@ -2311,7 +2311,7 @@ void tst_QtConcurrentMap::stlContainers()
QCOMPARE(list2.size(), (std::vector<int>::size_type)(2));
QtConcurrent::mapped(list, mapper).waitForFinished();
-
+
QtConcurrent::blockingMap(list, multiplyBy2Immutable);
}
diff --git a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
index ab1b0e9d06..8a289ff4e1 100644
--- a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
+++ b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
@@ -137,10 +137,10 @@ public:
void tst_QtConcurrentRun::returnValue()
{
QFuture<int> f;
-
+
f = run(returnInt0);
QCOMPARE(f.result(), 10);
-
+
A a;
f = run(&a, &A::member0);
QCOMPARE(f.result(), 10);
@@ -214,7 +214,7 @@ void tst_QtConcurrentRun::functionObject()
{
QFuture<void> f;
TestClass c;
-
+
f = run(c);
f = run(&c);
f = run(c, 10);
diff --git a/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp b/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
index ccc23851b7..51f07993cd 100644
--- a/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
+++ b/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
@@ -44,7 +44,6 @@
#include <QtCore/qsequentialanimationgroup.h>
Q_DECLARE_METATYPE(QAbstractAnimation::State)
-Q_DECLARE_METATYPE(QAbstractAnimation*)
class tst_QSequentialAnimationGroup : public QObject
{
@@ -84,7 +83,6 @@ private slots:
void tst_QSequentialAnimationGroup::initTestCase()
{
qRegisterMetaType<QAbstractAnimation::State>("QAbstractAnimation::State");
- qRegisterMetaType<QAbstractAnimation*>("QAbstractAnimation*");
}
void tst_QSequentialAnimationGroup::construction()
diff --git a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
index 6c566e017b..b5f736cfbb 100644
--- a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
+++ b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
@@ -84,6 +84,7 @@ private slots:
void utfHeaders_data();
void utfHeaders();
+ void codecForHtml_data();
void codecForHtml();
void codecForUtfText_data();
@@ -1853,23 +1854,81 @@ void tst_QTextCodec::utfHeaders()
}
}
-void tst_QTextCodec::codecForHtml()
+void tst_QTextCodec::codecForHtml_data()
{
- QByteArray html("<html><head></head><body>blah</body></html>");
+ QTest::addColumn<QByteArray>("html");
+ QTest::addColumn<int>("defaultCodecMib");
+ QTest::addColumn<int>("expectedMibEnum");
- QCOMPARE(QTextCodec::codecForHtml(html)->mibEnum(), 4); // latin 1
+ int noDefault = -1;
+ int fallback = 4; // latin 1
+ QByteArray html = "<html><head></head><body>blah</body></html>";
+ QTest::newRow("no charset, latin 1") << html << noDefault << fallback;
- QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(106))->mibEnum(), 106); // UTF-8
+ QTest::newRow("no charset, default UTF-8") << html << 106 << 106;
html = "<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-15\" /></head></html>";
- QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(106))->mibEnum(), 111); // latin 15
+ QTest::newRow("latin 15, default UTF-8") << html << 106 << 111;
html = "<html><head><meta content=\"text/html; charset=ISO-8859-15\" http-equiv=\"content-type\" /></head></html>";
- QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(106))->mibEnum(), 111); // latin 15
+ QTest::newRow("latin 15, default UTF-8 (#2)") << html << 106 << 111;
+
+ html = "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9,chrome=1\"><title>Test</title></head>";
+ QTest::newRow("UTF-8, no default") << html << noDefault << 106;
+
+ html = "<!DOCTYPE html><html><head><meta charset=\"ISO_8859-1:1987\"><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9,chrome=1\"><title>Test</title></head>";
+ QTest::newRow("latin 1, no default") << html << noDefault << 4;
+
+ html = "<!DOCTYPE html><html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9,chrome=1\"><meta charset=\"utf-8\"><title>Test</title></head>";
+ QTest::newRow("UTF-8, no default (#2)") << html << noDefault << 106;
+
+ html = "<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8/></head></html>";
+ QTest::newRow("UTF-8, no quotes") << html << noDefault << 106;
+
+ html = "<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset='UTF-8'/></head></html>";
+ QTest::newRow("UTF-8, single quotes") << html << noDefault << 106;
+
+ html = "<!DOCTYPE html><html><head><meta charset=utf-8><title>Test</title></head>";
+ QTest::newRow("UTF-8, > terminator") << html << noDefault << 106;
+
+ html = "<!DOCTYPE html><html><head><meta charset= utf-8 ><title>Test</title></head>";
+ QTest::newRow("UTF-8, > terminator with spaces") << html << noDefault << 106;
+
+ html = "<!DOCTYPE html><html><head><meta charset= utf/8 ><title>Test</title></head>";
+ QTest::newRow("UTF-8, > teminator with early backslash)") << html << noDefault << 106;
+ // Test invalid charsets.
html = "<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=invalid-foo\" /></head></html>";
- QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(106))->mibEnum(), 106); // UTF-8
- QCOMPARE(QTextCodec::codecForHtml(html)->mibEnum(), 4); // latin 1
+ QTest::newRow("invalid charset, no default") << html << noDefault << fallback;
+ QTest::newRow("invalid charset, default UTF-8") << html << 106 << 106;
+
+ html = "<!DOCTYPE html><html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9,chrome=1\"><meta charset=\"";
+ html.prepend(QByteArray().fill(' ', 512 - html.size()));
+ QTest::newRow("invalid charset (large header)") << html << noDefault << fallback;
+
+ html = "<!DOCTYPE html><html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9,chrome=1\"><meta charset=\"utf-8";
+ QTest::newRow("invalid charset (no closing double quote)") << html << noDefault << fallback;
+
+ html = "<!DOCTYPE html><html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=9,chrome=1\"><meta charset='utf-8";
+ QTest::newRow("invalid charset (no closing single quote)") << html << noDefault << fallback;
+
+ html = "<!DOCTYPE html><html><head><meta charset=utf-8 foo=bar><title>Test</title></head>";
+ QTest::newRow("invalid (space terminator)") << html << noDefault << fallback;
+
+ html = "<!DOCTYPE html><html><head><meta charset=\" utf' 8 /><title>Test</title></head>";
+ QTest::newRow("invalid charset, early terminator (')") << html << noDefault << fallback;
+}
+
+void tst_QTextCodec::codecForHtml()
+{
+ QFETCH(QByteArray, html);
+ QFETCH(int, defaultCodecMib);
+ QFETCH(int, expectedMibEnum);
+
+ if (defaultCodecMib != -1)
+ QCOMPARE(QTextCodec::codecForHtml(html, QTextCodec::codecForMib(defaultCodecMib))->mibEnum(), expectedMibEnum);
+ else // Test one parameter version when there is no default codec.
+ QCOMPARE(QTextCodec::codecForHtml(html)->mibEnum(), expectedMibEnum);
}
void tst_QTextCodec::codecForUtfText_data()
diff --git a/tests/auto/corelib/global/global.pro b/tests/auto/corelib/global/global.pro
index 5489b8330d..c05905bd15 100644
--- a/tests/auto/corelib/global/global.pro
+++ b/tests/auto/corelib/global/global.pro
@@ -7,4 +7,6 @@ SUBDIRS=\
qnumeric \
qrand \
qlogging \
- qtendian
+ qtendian \
+ qglobalstatic \
+
diff --git a/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp b/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
index a4aca82aa9..ef41ef8801 100644
--- a/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
+++ b/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
@@ -75,6 +75,13 @@ void tst_QGetPutEnv::getSetCheck()
QVERIFY(result == "supervalue");
qputenv(varName,QByteArray());
+
+ // Now test qunsetenv
+ QVERIFY(qunsetenv(varName));
+ QVERIFY(!qEnvironmentVariableIsSet(varName));
+ QVERIFY(qEnvironmentVariableIsEmpty(varName));
+ result = qgetenv(varName);
+ QCOMPARE(result, QByteArray());
}
QTEST_MAIN(tst_QGetPutEnv)
diff --git a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
index f54af657c0..3696ee264f 100644
--- a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
+++ b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
@@ -55,6 +55,8 @@ private slots:
void checkptr();
void qstaticassert();
void qConstructorFunction();
+ void qCoreAppStartupFunction();
+ void qCoreAppStartupFunctionRestart();
void isEnum();
void qAlignOf();
};
@@ -303,6 +305,33 @@ void tst_QGlobal::qConstructorFunction()
QCOMPARE(qConstructorFunctionValue, 123);
}
+static int qStartupFunctionValue;
+static void myStartupFunc()
+{
+ Q_ASSERT(QCoreApplication::instance());
+ if (QCoreApplication::instance())
+ qStartupFunctionValue += 124;
+}
+
+Q_COREAPP_STARTUP_FUNCTION(myStartupFunc)
+
+void tst_QGlobal::qCoreAppStartupFunction()
+{
+ QCOMPARE(qStartupFunctionValue, 0);
+ int argc = 1;
+ char *argv[] = { const_cast<char*>("tst_qglobal") };
+ QCoreApplication app(argc, argv);
+ QCOMPARE(qStartupFunctionValue, 124);
+}
+
+void tst_QGlobal::qCoreAppStartupFunctionRestart()
+{
+ qStartupFunctionValue = 0;
+ qCoreAppStartupFunction();
+ qStartupFunctionValue = 0;
+ qCoreAppStartupFunction();
+}
+
struct isEnum_A {
int n_;
};
@@ -532,5 +561,5 @@ void tst_QGlobal::qAlignOf()
#undef TEST_AlignOf_RValueRef
#undef TEST_AlignOf_impl
-QTEST_MAIN(tst_QGlobal)
+QTEST_APPLESS_MAIN(tst_QGlobal)
#include "tst_qglobal.moc"
diff --git a/tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro b/tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro
new file mode 100644
index 0000000000..21cab8f67d
--- /dev/null
+++ b/tests/auto/corelib/global/qglobalstatic/qglobalstatic.pro
@@ -0,0 +1,12 @@
+QT += testlib core-private
+
+QT -= gui
+
+TARGET = tst_qglobalstatic
+CONFIG += console
+CONFIG -= app_bundle
+CONFIG += exceptions
+
+SOURCES += tst_qglobalstatic.cpp
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
+DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/corelib/global/qglobalstatic/tst_qglobalstatic.cpp b/tests/auto/corelib/global/qglobalstatic/tst_qglobalstatic.cpp
new file mode 100644
index 0000000000..131b37f821
--- /dev/null
+++ b/tests/auto/corelib/global/qglobalstatic/tst_qglobalstatic.cpp
@@ -0,0 +1,236 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtCore module 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 <QtCore/QThread>
+#include <QtTest/QtTest>
+
+class tst_QGlobalStatic : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void beforeInitialization();
+ void api();
+ void constVolatile();
+ void exception();
+ void threadedException();
+ void threadStressTest();
+ void afterDestruction();
+};
+
+Q_GLOBAL_STATIC_WITH_ARGS(const int, constInt, (42))
+Q_GLOBAL_STATIC_WITH_ARGS(volatile int, volatileInt, (-47))
+
+void otherFunction()
+{
+ // never called
+ constInt();
+ volatileInt();
+}
+
+// do not initialize the following Q_GLOBAL_STATIC
+Q_GLOBAL_STATIC(int, checkedBeforeInitialization)
+void tst_QGlobalStatic::beforeInitialization()
+{
+ QVERIFY(!checkedBeforeInitialization.exists());
+ QVERIFY(!checkedBeforeInitialization.isDestroyed());
+}
+
+struct Type {
+ int i;
+};
+
+Q_GLOBAL_STATIC(Type, checkedAfterInitialization)
+void tst_QGlobalStatic::api()
+{
+ // check the API
+ QVERIFY((Type *)checkedAfterInitialization);
+ QVERIFY(checkedAfterInitialization());
+ *checkedAfterInitialization = Type();
+ *checkedAfterInitialization() = Type();
+
+ checkedAfterInitialization()->i = 47;
+ checkedAfterInitialization->i = 42;
+ QCOMPARE(checkedAfterInitialization()->i, 42);
+ checkedAfterInitialization()->i = 47;
+ QCOMPARE(checkedAfterInitialization->i, 47);
+
+ QVERIFY(checkedAfterInitialization.exists());
+ QVERIFY(!checkedAfterInitialization.isDestroyed());
+}
+
+void tst_QGlobalStatic::constVolatile()
+{
+ QCOMPARE(*constInt(), 42);
+ QCOMPARE((int)*volatileInt(), -47);
+ QCOMPARE(*constInt(), 42);
+ QCOMPARE((int)*volatileInt(), -47);
+}
+
+struct ThrowingType
+{
+ static QBasicAtomicInt constructedCount;
+ static QBasicAtomicInt destructedCount;
+ ThrowingType()
+ {
+ throw 0;
+ }
+
+ ThrowingType(QBasicAtomicInt &throwControl)
+ {
+ constructedCount.ref();
+ if (throwControl.fetchAndAddRelaxed(-1) != 0)
+ throw 0;
+ }
+ ~ThrowingType() { destructedCount.ref(); }
+};
+
+QBasicAtomicInt ThrowingType::constructedCount = Q_BASIC_ATOMIC_INITIALIZER(0);
+QBasicAtomicInt ThrowingType::destructedCount = Q_BASIC_ATOMIC_INITIALIZER(0);
+
+Q_GLOBAL_STATIC(ThrowingType, throwingGS)
+void tst_QGlobalStatic::exception()
+{
+ bool exceptionCaught = false;
+ try {
+ throwingGS();
+ } catch (int) {
+ exceptionCaught = true;
+ }
+ QVERIFY(exceptionCaught);
+ QCOMPARE(Q_QGS_throwingGS::guard.load(), 0);
+ QVERIFY(!throwingGS.exists());
+ QVERIFY(!throwingGS.isDestroyed());
+}
+
+QBasicAtomicInt exceptionControlVar = Q_BASIC_ATOMIC_INITIALIZER(1);
+Q_GLOBAL_STATIC_WITH_ARGS(ThrowingType, exceptionGS, (exceptionControlVar))
+void tst_QGlobalStatic::threadedException()
+{
+ if (exceptionControlVar.load() != 1)
+ QSKIP("This test cannot be run more than once");
+ ThrowingType::constructedCount.store(0);
+ ThrowingType::destructedCount.store(0);
+
+ bool exceptionCaught = false;
+ try {
+ exceptionGS();
+ } catch (int) {
+ exceptionCaught = true;
+ }
+ QCOMPARE(ThrowingType::constructedCount.load(), 1);
+ QVERIFY(exceptionCaught);
+
+ exceptionGS();
+ QCOMPARE(ThrowingType::constructedCount.load(), 2);
+}
+
+QBasicAtomicInt threadStressTestControlVar = Q_BASIC_ATOMIC_INITIALIZER(5);
+Q_GLOBAL_STATIC_WITH_ARGS(ThrowingType, threadStressTestGS, (threadStressTestControlVar))
+
+
+void tst_QGlobalStatic::threadStressTest()
+{
+ class ThreadStressTestThread: public QThread
+ {
+ public:
+ QReadWriteLock *lock;
+ void run()
+ {
+ QReadLocker l(lock);
+ //usleep(qrand() * 200 / RAND_MAX);
+ // thundering herd
+ try {
+ threadStressTestGS();
+ } catch (int) {
+ }
+ }
+ };
+
+ ThrowingType::constructedCount.store(0);
+ ThrowingType::destructedCount.store(0);
+ int expectedConstructionCount = threadStressTestControlVar.load() + 1;
+ if (expectedConstructionCount <= 0)
+ QSKIP("This test cannot be run more than once");
+
+ const int numThreads = 200;
+ ThreadStressTestThread threads[numThreads];
+ QReadWriteLock lock;
+ lock.lockForWrite();
+ for (int i = 0; i < numThreads; ++i) {
+ threads[i].lock = &lock;
+ threads[i].start();
+ }
+
+ // wait for all threads
+ // release the herd
+ lock.unlock();
+
+ for (int i = 0; i < numThreads; ++i)
+ threads[i].wait();
+
+ QCOMPARE(ThrowingType::constructedCount.loadAcquire(), expectedConstructionCount);
+ QCOMPARE(ThrowingType::destructedCount.loadAcquire(), 0);
+}
+
+Q_GLOBAL_STATIC(int, checkedAfterDestruction)
+void tst_QGlobalStatic::afterDestruction()
+{
+ // this test will not produce results now
+ // it will simply run some code on destruction (after the global statics have been deleted)
+ // if that fails, this will cause a crash
+
+ // static destruction is LIFO: so we must add our exit-time code before the
+ // global static is used for the first time
+ static struct RunAtExit {
+ ~RunAtExit() {
+ int *ptr = checkedAfterDestruction();
+ if (ptr)
+ qFatal("Global static is not null as was expected");
+ }
+ } runAtExit;
+ (void) runAtExit;
+
+ *checkedAfterDestruction = 42;
+}
+
+QTEST_APPLESS_MAIN(tst_QGlobalStatic);
+
+#include "tst_qglobalstatic.moc"
diff --git a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
index fc96d656a0..04ce504189 100644
--- a/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
+++ b/tests/auto/corelib/global/qlogging/tst_qlogging.cpp
@@ -64,9 +64,11 @@ private slots:
#endif
void qMessagePattern();
+ void qMessagePatternIf();
private:
QString m_appDir;
+ QStringList m_baseEnvironment;
};
static QtMsgType s_type;
@@ -98,6 +100,14 @@ void tst_qmessagehandler::initTestCase()
m_appDir = QFINDTESTDATA("app");
QVERIFY2(!m_appDir.isEmpty(), qPrintable(
QString::fromLatin1("Couldn't find helper app dir starting from %1.").arg(QDir::currentPath())));
+
+ m_baseEnvironment = QProcess::systemEnvironment();
+ for (int i = 0; i < m_baseEnvironment.count(); ++i) {
+ if (m_baseEnvironment.at(i).startsWith("QT_MESSAGE_PATTERN=")) {
+ m_baseEnvironment.removeAt(i);
+ break;
+ }
+ }
}
void tst_qmessagehandler::cleanup()
@@ -637,7 +647,7 @@ void tst_qmessagehandler::qMessagePattern()
//
// test QT_MESSAGE_PATTERN
//
- QStringList environment = QProcess::systemEnvironment();
+ QStringList environment = m_baseEnvironment;
// %{file} is tricky because of shadow builds
environment.prepend("QT_MESSAGE_PATTERN=\"%{type} %{appname} %{line} %{function} %{message}\"");
process.setEnvironment(environment);
@@ -659,7 +669,7 @@ void tst_qmessagehandler::qMessagePattern()
QVERIFY(output.contains("critical tst_qlogging 58 main qCritical"));
QVERIFY(output.contains("debug tst_qlogging 62 main qDebug2"));
- environment = QProcess::systemEnvironment();
+ environment = m_baseEnvironment;
environment.prepend("QT_MESSAGE_PATTERN=\"PREFIX: %{unknown} %{message}\"");
process.setEnvironment(environment);
@@ -702,5 +712,68 @@ void tst_qmessagehandler::qMessagePattern()
QCOMPARE(QString::fromLatin1(output), QString::fromLatin1(expected));
}
+void tst_qmessagehandler::qMessagePatternIf()
+{
+ QProcess process;
+ const QString appExe = m_appDir + "/app";
+
+ QStringList environment = m_baseEnvironment;
+ environment.prepend("QT_MESSAGE_PATTERN=\"[%{if-debug}D%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{message}\"");
+ process.setEnvironment(environment);
+ process.start(appExe);
+ QVERIFY2(process.waitForStarted(), qPrintable(
+ QString::fromLatin1("Could not start %1: %2").arg(appExe, process.errorString())));
+ process.waitForFinished();
+
+ QByteArray output = process.readAllStandardError();
+ // qDebug() << output;
+ QVERIFY(!output.isEmpty());
+ QVERIFY(!output.contains("QT_MESSAGE_PATTERN"));
+
+ QVERIFY(output.contains("[D] static constructor"));
+ // we can't be sure whether the QT_MESSAGE_PATTERN is already destructed
+ QVERIFY(output.contains("static destructor"));
+ QVERIFY(output.contains("[D] qDebug"));
+ QVERIFY(output.contains("[W] qWarning"));
+ QVERIFY(output.contains("[C] qCritical"));
+ QVERIFY(output.contains("[D] qDebug2"));
+
+ //
+ // Tests some errors
+ //
+ environment = m_baseEnvironment;
+ environment.prepend("QT_MESSAGE_PATTERN=\"PREFIX: %{unknown} %{endif} %{if-warning}\"");
+ process.setEnvironment(environment);
+
+ process.start(appExe);
+ QVERIFY2(process.waitForStarted(), qPrintable(
+ QString::fromLatin1("Could not start %1: %2").arg(appExe, process.errorString())));
+ process.waitForFinished();
+
+ output = process.readAllStandardError();
+ // qDebug() << output;
+ QVERIFY(!output.isEmpty());
+ QVERIFY(output.contains("QT_MESSAGE_PATTERN: Unknown placeholder %{unknown}"));
+ QVERIFY(output.contains("QT_MESSAGE_PATTERN: %{endif} without an %{if-*}"));
+ QVERIFY(output.contains("QT_MESSAGE_PATTERN: missing %{endif}"));
+
+
+ environment = m_baseEnvironment;
+ environment.prepend("QT_MESSAGE_PATTERN=\"A %{if-debug}DEBUG%{if-warning}WARNING%{endif} %{message} \"");
+ process.setEnvironment(environment);
+
+ process.start(appExe);
+ QVERIFY2(process.waitForStarted(), qPrintable(
+ QString::fromLatin1("Could not start %1: %2").arg(appExe, process.errorString())));
+ process.waitForFinished();
+
+ output = process.readAllStandardError();
+ // qDebug() << output;
+ QVERIFY(!output.isEmpty());
+ QVERIFY(output.contains("QT_MESSAGE_PATTERN: %{if-*} cannot be nested"));
+ QVERIFY(output.contains("A DEBUG qDebug"));
+ QVERIFY(output.contains("A qWarning"));
+}
+
QTEST_MAIN(tst_qmessagehandler)
#include "tst_qlogging.moc"
diff --git a/tests/auto/corelib/global/qrand/tst_qrand.cpp b/tests/auto/corelib/global/qrand/tst_qrand.cpp
index 6f64ad74b2..4cbbb8de0f 100644
--- a/tests/auto/corelib/global/qrand/tst_qrand.cpp
+++ b/tests/auto/corelib/global/qrand/tst_qrand.cpp
@@ -64,7 +64,7 @@ void tst_QRand::testqrand()
for (int i=0; i<numTestValues; ++i)
if (generatedNumbers[i] != qrand())
generatesSameSequence = false;
-
+
QVERIFY(generatesSameSequence);
for (unsigned int seed=1; seed < 10; seed+=100) {
diff --git a/tests/auto/corelib/io/io.pro b/tests/auto/corelib/io/io.pro
index 03b42a2cbb..b3a51c6f6e 100644
--- a/tests/auto/corelib/io/io.pro
+++ b/tests/auto/corelib/io/io.pro
@@ -14,12 +14,14 @@ SUBDIRS=\
qfilesystemwatcher \
qiodevice \
qipaddress \
+ qlockfile \
qnodebug \
qprocess \
qprocess-noapplication \
qprocessenvironment \
qresourceengine \
qsettings \
+ qsavefile \
qstandardpaths \
qtemporarydir \
qtemporaryfile \
@@ -34,6 +36,12 @@ SUBDIRS=\
qwinoverlappedionotifier
}
+!qtHaveModule(network): SUBDIRS -= \
+ qfile \
+ qiodevice \
+ qprocess \
+ qtextstream
+
!contains(QT_CONFIG, private_tests): SUBDIRS -= \
qabstractfileengine \
qfileinfo \
diff --git a/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
index 299d375c9c..d7fc76d980 100644
--- a/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
@@ -883,7 +883,7 @@ static QBrush qBrushData(int index)
return custom;
}
case 7:
- QLinearGradient gradient(QPoint(2.718, 3.142), QPoint(3.1337, 42));
+ QLinearGradient gradient(QPointF(2.718, 3.142), QPointF(3.1337, 42));
gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
gradient.setSpread(QGradient::ReflectSpread);
gradient.setInterpolationMode(QGradient::ComponentInterpolation);
diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
index 333ccc8e49..f452efc1b3 100644
--- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
+++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
@@ -52,7 +52,8 @@ private slots:
void warningWithoutDebug() const;
void criticalWithoutDebug() const;
void debugWithBool() const;
- void debugNoSpaces() const;
+ void debugSpaceHandling() const;
+ void stateSaver() const;
void veryLongWarningMessage() const;
void qDebugQStringRef() const;
void qDebugQLatin1String() const;
@@ -150,7 +151,36 @@ void tst_QDebug::debugWithBool() const
QCOMPARE(QString::fromLatin1(s_function), function);
}
-void tst_QDebug::debugNoSpaces() const
+class MyPoint
+{
+public:
+ MyPoint(int val1, int val2)
+ : v1(val1), v2(val2) {}
+ int v1;
+ int v2;
+};
+QDebug operator<< (QDebug s, const MyPoint& point)
+{
+ const QDebugStateSaver saver(s);
+ return s.nospace() << "MyPoint(" << point.v1 << ", " << point.v2 << ")";
+}
+
+class MyLine
+{
+public:
+ MyLine(const MyPoint& point1, const MyPoint& point2)
+ : p1(point1), p2(point2) {}
+ MyPoint p1;
+ MyPoint p2;
+};
+QDebug operator<< (QDebug s, const MyLine& line)
+{
+ const QDebugStateSaver saver(s);
+ s.nospace() << "MyLine(" << line.p1 << ", " << line.p2 << ")";
+ return s;
+}
+
+void tst_QDebug::debugSpaceHandling() const
{
MessageHandlerSetter mhs(myMessageHandler);
{
@@ -166,8 +196,26 @@ void tst_QDebug::debugNoSpaces() const
d << "key=" << "value";
d.space();
d << 1 << 2;
+ MyLine line(MyPoint(10, 11), MyPoint (12, 13));
+ d << line;
+ // With the old implementation of MyPoint doing dbg.nospace() << ...; dbg.space() we ended up with
+ // MyLine(MyPoint(10, 11) , MyPoint(12, 13) )
+ }
+ QCOMPARE(s_msg, QString::fromLatin1(" foo key=value 1 2 MyLine(MyPoint(10, 11), MyPoint(12, 13))"));
+}
+
+void tst_QDebug::stateSaver() const
+{
+ MessageHandlerSetter mhs(myMessageHandler);
+ {
+ QDebug d = qDebug();
+ {
+ QDebugStateSaver saver(d);
+ d.nospace() << hex << right << qSetFieldWidth(3) << qSetPadChar('0') << 42;
+ }
+ d.space() << 42;
}
- QCOMPARE(s_msg, QString::fromLatin1(" foo key=value 1 2 "));
+ QCOMPARE(s_msg, QString::fromLatin1("02a 42 "));
}
void tst_QDebug::veryLongWarningMessage() const
diff --git a/tests/auto/corelib/io/qfile/stdinprocess/main.cpp b/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
index 1c22da45b3..9ca531f615 100644
--- a/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
+++ b/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
@@ -50,7 +50,7 @@ int main(int argc, char *argv[])
printf("echos all its input to its output.\n");
return 1;
}
-
+
QFile file;
if (strcmp(argv[1], "all") == 0) {
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index 6fa222dd72..929865d4d6 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -80,6 +80,12 @@ QT_END_NAMESPACE
# include <sys/statfs.h>
#elif defined(Q_OS_WINCE)
# include <qplatformdefs.h>
+#elif defined(Q_OS_VXWORKS)
+# include <fcntl.h>
+#if defined(_WRS_KERNEL)
+#undef QT_OPEN
+#define QT_OPEN(path, oflag) ::open(path, oflag, 0)
+#endif
#endif
#ifdef Q_OS_QNX
@@ -487,11 +493,6 @@ void tst_QFile::open_data()
QTest::addColumn<bool>("ok");
QTest::addColumn<QFile::FileError>("status");
-#ifdef Q_OS_MAC
- static const QString denied("Operation not permitted");
-#else
- static const QString denied("Permission denied");
-#endif
QTest::newRow( "exist_readOnly" )
<< m_testFile << int(QIODevice::ReadOnly)
<< true << QFile::NoError;
@@ -551,7 +552,7 @@ void tst_QFile::open()
QFETCH( bool, ok );
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_VXWORKS)
if (::getuid() == 0)
// root and Chuck Norris don't care for file permissions. Skip.
QSKIP("Running this test as root doesn't make sense");
@@ -1321,7 +1322,7 @@ void tst_QFile::copyFallback()
QVERIFY(QFile::exists("file-copy-destination.txt"));
QVERIFY(!file.isOpen());
- file.close();
+ file.close();
QFile::setPermissions("file-copy-destination.txt",
QFile::ReadOwner | QFile::WriteOwner);
}
@@ -2248,7 +2249,7 @@ static QByteArray getLargeDataBlock()
if (array.isNull())
{
-#if defined(Q_OS_WINCE)
+#if defined(Q_OS_WINCE) || defined(Q_OS_VXWORKS)
int resizeSize = 1024 * 1024; // WinCE does not have much space
#else
int resizeSize = 64 * 1024 * 1024;
@@ -2438,7 +2439,9 @@ void tst_QFile::rename()
#if defined(Q_OS_UNIX)
if (strcmp(QTest::currentDataTag(), "renamefile -> /etc/renamefile") == 0) {
+#if !defined(Q_OS_VXWORKS)
if (::getuid() == 0)
+#endif
QSKIP("Running this test as root doesn't make sense");
}
#endif
@@ -2925,8 +2928,8 @@ void tst_QFile::map()
// exotic test to make sure that multiple maps work
// note: windows ce does not reference count mutliple maps
- // it's essentially just the same reference but it
- // cause a resource lock on the file which prevents it
+ // it's essentially just the same reference but it
+ // cause a resource lock on the file which prevents it
// from being removed uchar *memory1 = file.map(0, file.size());
uchar *memory1 = file.map(0, file.size());
QCOMPARE(file.error(), QFile::NoError);
@@ -2947,6 +2950,7 @@ void tst_QFile::map()
file.close();
+#if !defined(Q_OS_VXWORKS)
#if defined(Q_OS_UNIX)
if (::getuid() != 0)
// root always has permissions
@@ -2961,6 +2965,7 @@ void tst_QFile::map()
QVERIFY(!memory);
QVERIFY(file.setPermissions(originalPermissions));
}
+#endif
QVERIFY(file.remove());
}
@@ -3342,7 +3347,7 @@ void tst_QFile::autocloseHandle()
{
QFile file("readonlyfile");
QVERIFY(openFile(file, QIODevice::ReadOnly, OpenStream, QFile::DontCloseHandle));
- QCOMPARE(file.handle(), QT_FILENO(stream_));
+ QCOMPARE(file.handle(), int(QT_FILENO(stream_)));
file.close();
QCOMPARE(file.handle(), -1);
//file is not closed, read should succeed
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
index ded77c649f..bcc971bf4b 100644
--- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -46,6 +46,7 @@
#include <qcoreapplication.h>
#include <qlibrary.h>
#include <qtemporaryfile.h>
+#include <qtemporarydir.h>
#include <qdir.h>
#include <qfileinfo.h>
#ifdef Q_OS_UNIX
@@ -54,10 +55,11 @@
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
+#ifndef Q_OS_VXWORKS
#include <pwd.h>
#endif
+#endif
#ifdef Q_OS_WIN
-#define _WIN32_WINNT 0x500
#include <qt_windows.h>
#include <qlibrary.h>
#if !defined(Q_OS_WINCE)
@@ -72,6 +74,10 @@
#include <private/qfileinfo_p.h>
#include "../../../../shared/filesystem.h"
+#if defined(Q_OS_VXWORKS)
+#define Q_NO_SYMLINKS
+#endif
+
QT_BEGIN_NAMESPACE
extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */);
QT_END_NAMESPACE
@@ -80,7 +86,11 @@ class tst_QFileInfo : public QObject
{
Q_OBJECT
+public:
+ tst_QFileInfo() : m_currentDir(QDir::currentPath()) {}
+
private slots:
+ void initTestCase();
void cleanupTestCase();
void getSetCheck();
@@ -190,32 +200,27 @@ private slots:
void invalidState();
void nonExistingFileDates();
+
+private:
+ const QString m_currentDir;
+ QString m_sourceFile;
+ QString m_resourcesDir;
+ QTemporaryDir m_dir;
};
-void tst_QFileInfo::cleanupTestCase()
+void tst_QFileInfo::initTestCase()
{
- QFile::remove("brokenlink.lnk");
- QFile::remove("link.lnk");
- QFile::remove("file1");
- QFile::remove("dummyfile");
- QFile::remove("simplefile.txt");
- QFile::remove("longFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileNamelongFileName.txt");
- QFile::remove("tempfile.txt");
+ m_sourceFile = QFINDTESTDATA("tst_qfileinfo.cpp");
+ QVERIFY(!m_sourceFile.isEmpty());
+ m_resourcesDir = QFINDTESTDATA("resources");
+ QVERIFY(!m_resourcesDir.isEmpty());
+ QVERIFY(m_dir.isValid());
+ QVERIFY(QDir::setCurrent(m_dir.path()));
+}
-#if defined(Q_OS_UNIX)
- QDir().rmdir("./.hidden-directory");
- QFile::remove("link_to_tst_qfileinfo");
-#endif
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- QDir().rmdir("./hidden-directory");
- QDir().rmdir("abs_symlink");
- QDir().rmdir("rel_symlink");
- QDir().rmdir("junction_pwd");
- QDir().rmdir("junction_root");
- QDir().rmdir("mountpoint");
- QFile::remove("abs_symlink.cpp");
- QFile::remove("rel_symlink.cpp");
-#endif
+void tst_QFileInfo::cleanupTestCase()
+{
+ QDir::setCurrent(m_currentDir); // Release temporary directory so that it can be deleted on Windows
}
// Testing get/set functions
@@ -237,10 +242,9 @@ static QFileInfoPrivate* getPrivate(QFileInfo &info)
void tst_QFileInfo::copy()
{
- QTemporaryFile *t;
- t = new QTemporaryFile;
- t->open();
- QFileInfo info(t->fileName());
+ QTemporaryFile t;
+ t.open();
+ QFileInfo info(t.fileName());
QVERIFY(info.exists());
//copy constructor
@@ -287,7 +291,7 @@ void tst_QFileInfo::isFile_data()
QTest::addColumn<bool>("expected");
QTest::newRow("data0") << QDir::currentPath() << false;
- QTest::newRow("data1") << QFINDTESTDATA("tst_qfileinfo.cpp") << true;
+ QTest::newRow("data1") << m_sourceFile << true;
QTest::newRow("data2") << ":/tst_qfileinfo/resources/" << false;
QTest::newRow("data3") << ":/tst_qfileinfo/resources/file1" << true;
QTest::newRow("data4") << ":/tst_qfileinfo/resources/afilethatshouldnotexist" << false;
@@ -320,13 +324,13 @@ void tst_QFileInfo::isDir_data()
QTest::addColumn<bool>("expected");
QTest::newRow("data0") << QDir::currentPath() << true;
- QTest::newRow("data1") << QFINDTESTDATA("tst_qfileinfo.cpp") << false;
+ QTest::newRow("data1") << m_sourceFile << false;
QTest::newRow("data2") << ":/tst_qfileinfo/resources/" << true;
QTest::newRow("data3") << ":/tst_qfileinfo/resources/file1" << false;
QTest::newRow("data4") << ":/tst_qfileinfo/resources/afilethatshouldnotexist" << false;
- QTest::newRow("simple dir") << QFINDTESTDATA("resources") << true;
- QTest::newRow("simple dir with slash") << QFINDTESTDATA("resources/") << true;
+ QTest::newRow("simple dir") << m_resourcesDir << true;
+ QTest::newRow("simple dir with slash") << (m_resourcesDir + QLatin1Char('/')) << true;
QTest::newRow("broken link") << "brokenlink.lnk" << false;
@@ -366,8 +370,8 @@ void tst_QFileInfo::isRoot_data()
QTest::newRow("data4") << ":/tst_qfileinfo/resources/" << false;
QTest::newRow("data5") << ":/" << true;
- QTest::newRow("simple dir") << QFINDTESTDATA("resources") << false;
- QTest::newRow("simple dir with slash") << QFINDTESTDATA("resources/") << false;
+ QTest::newRow("simple dir") << m_resourcesDir << false;
+ QTest::newRow("simple dir with slash") << (m_resourcesDir + QLatin1Char('/')) << false;
#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE))
QTest::newRow("drive 1") << "c:" << false;
QTest::newRow("drive 2") << "c:/" << true;
@@ -398,21 +402,21 @@ void tst_QFileInfo::exists_data()
QTest::addColumn<bool>("expected");
QTest::newRow("data0") << QDir::currentPath() << true;
- QTest::newRow("data1") << QFINDTESTDATA("tst_qfileinfo.cpp") << true;
+ QTest::newRow("data1") << m_sourceFile << true;
QTest::newRow("data2") << "/I/do_not_expect_this_path_to_exist/" << false;
QTest::newRow("data3") << ":/tst_qfileinfo/resources/" << true;
QTest::newRow("data4") << ":/tst_qfileinfo/resources/file1" << true;
QTest::newRow("data5") << ":/I/do_not_expect_this_path_to_exist/" << false;
- QTest::newRow("data6") << (QFINDTESTDATA("resources/") + "*") << false;
- QTest::newRow("data7") << (QFINDTESTDATA("resources/") + "*.foo") << false;
- QTest::newRow("data8") << (QFINDTESTDATA("resources/") + "*.ext1") << false;
- QTest::newRow("data9") << (QFINDTESTDATA("resources/") + "file?.ext1") << false;
+ QTest::newRow("data6") << (m_resourcesDir + "/*") << false;
+ QTest::newRow("data7") << (m_resourcesDir + "/*.foo") << false;
+ QTest::newRow("data8") << (m_resourcesDir + "/*.ext1") << false;
+ QTest::newRow("data9") << (m_resourcesDir + "/file?.ext1") << false;
QTest::newRow("data10") << "." << true;
QTest::newRow("data11") << ". " << false;
QTest::newRow("empty") << "" << false;
- QTest::newRow("simple dir") << QFINDTESTDATA("resources") << true;
- QTest::newRow("simple dir with slash") << QFINDTESTDATA("resources/") << true;
+ QTest::newRow("simple dir") << m_resourcesDir << true;
+ QTest::newRow("simple dir with slash") << (m_resourcesDir + QLatin1Char('/')) << true;
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
QTest::newRow("unc 1") << "//" + QtNetworkSettings::winServerName() << true;
@@ -561,7 +565,7 @@ void tst_QFileInfo::canonicalFilePath()
// test symlinks
QFile::remove("link.lnk");
{
- QFile file(QFINDTESTDATA("tst_qfileinfo.cpp"));
+ QFile file(m_sourceFile);
if (file.link("link.lnk")) {
QFileInfo info1(file);
QFileInfo info2("link.lnk");
@@ -587,7 +591,7 @@ void tst_QFileInfo::canonicalFilePath()
QCOMPARE(info1.canonicalFilePath(), info2.canonicalFilePath());
QFileInfo info3(link + QDir::separator() + "link.lnk");
- QFileInfo info4(QFINDTESTDATA("tst_qfileinfo.cpp"));
+ QFileInfo info4(m_sourceFile);
QVERIFY(!info3.canonicalFilePath().isEmpty());
QCOMPARE(info4.canonicalFilePath(), info3.canonicalFilePath());
@@ -621,20 +625,21 @@ void tst_QFileInfo::canonicalFilePath()
// CreateSymbolicLink can return TRUE & still fail to create the link,
// the error code in that case is ERROR_PRIVILEGE_NOT_HELD (1314)
SetLastError(0);
- BOOL ret = ptrCreateSymbolicLink((wchar_t*)QString("res").utf16(), (wchar_t*)QString("resources").utf16(), 1);
+ const QString linkTarget = QStringLiteral("res");
+ BOOL ret = ptrCreateSymbolicLink((wchar_t*)linkTarget.utf16(), (wchar_t*)m_resourcesDir.utf16(), 1);
DWORD dwErr = GetLastError();
if (!ret)
QSKIP("Symbolic links aren't supported by FS");
QString currentPath = QDir::currentPath();
- bool is_res_Current = QDir::setCurrent("res");
+ bool is_res_Current = QDir::setCurrent(linkTarget);
if (!is_res_Current && dwErr == 1314)
QSKIP("Not enough privilages to create Symbolic links");
QCOMPARE(is_res_Current, true);
+ const QString actualCanonicalPath = QFileInfo("file1").canonicalFilePath();
+ QVERIFY(QDir::setCurrent(currentPath));
+ QCOMPARE(actualCanonicalPath, m_resourcesDir + QStringLiteral("/file1"));
- QCOMPARE(QFileInfo("file1").canonicalFilePath(), currentPath + "/resources/file1");
-
- QCOMPARE(QDir::setCurrent(currentPath), true);
- QDir::current().rmdir("res");
+ QDir::current().rmdir(linkTarget);
}
#endif
}
@@ -855,7 +860,7 @@ void tst_QFileInfo::permission_data()
QTest::addColumn<bool>("expected");
QTest::newRow("data0") << QCoreApplication::instance()->applicationFilePath() << int(QFile::ExeUser) << true;
- QTest::newRow("data1") << QFINDTESTDATA("tst_qfileinfo.cpp") << int(QFile::ReadUser) << true;
+ QTest::newRow("data1") << m_sourceFile << int(QFile::ReadUser) << true;
QTest::newRow("resource1") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::ReadUser) << true;
QTest::newRow("resource2") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::WriteUser) << false;
QTest::newRow("resource3") << ":/tst_qfileinfo/resources/file1.ext1" << int(QFile::ExeUser) << false;
@@ -921,13 +926,15 @@ void tst_QFileInfo::compare_data()
if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_6)
caseSensitiveOnMac = false;
#endif
+ QString caseChangedSource = m_sourceFile;
+ caseChangedSource.replace("info", "Info");
QTest::newRow("data0")
- << QFINDTESTDATA("tst_qfileinfo.cpp")
- << QFINDTESTDATA("tst_qfileinfo.cpp")
+ << m_sourceFile
+ << m_sourceFile
<< true;
QTest::newRow("data1")
- << QFINDTESTDATA("tst_qfileinfo.cpp")
+ << m_sourceFile
<< QString::fromLatin1("/tst_qfileinfo.cpp")
<< false;
QTest::newRow("data2")
@@ -935,8 +942,8 @@ void tst_QFileInfo::compare_data()
<< QDir::currentPath() + QString::fromLatin1("/tst_qfileinfo.cpp")
<< true;
QTest::newRow("casesense1")
- << QFINDTESTDATA("tst_qfileinfo.cpp").replace("info", "Info")
- << QFINDTESTDATA("tst_qfileinfo.cpp")
+ << caseChangedSource
+ << m_sourceFile
#if defined(Q_OS_WIN)
<< true;
#elif defined(Q_OS_MAC)
@@ -1013,7 +1020,7 @@ void tst_QFileInfo::fileTimes()
QEXPECT_FAIL("longfile absolutepath", "No long filenames on WinCE", Abort);
#endif
QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
-#ifdef Q_OS_UNIX
+#if defined(Q_OS_UNIX) && !defined(Q_OS_VXWORKS)
if (qIsLikelyToBeNfs(file.handle()))
QSKIP("This Test doesn't work on NFS");
#endif
@@ -1140,7 +1147,7 @@ void tst_QFileInfo::isSymLink_data()
QFile::remove("brokenlink.lnk");
QFile::remove("dummyfile");
- QFile file1(QFINDTESTDATA("tst_qfileinfo.cpp"));
+ QFile file1(m_sourceFile);
QVERIFY(file1.link("link.lnk"));
QFile file2("dummyfile");
@@ -1152,8 +1159,8 @@ void tst_QFileInfo::isSymLink_data()
QTest::addColumn<bool>("isSymLink");
QTest::addColumn<QString>("linkTarget");
- QTest::newRow("existent file") << QFINDTESTDATA("tst_qfileinfo.cpp") << false << "";
- QTest::newRow("link") << "link.lnk" << true << QFileInfo(QFINDTESTDATA("tst_qfileinfo.cpp")).absoluteFilePath();
+ QTest::newRow("existent file") << m_sourceFile << false << "";
+ QTest::newRow("link") << "link.lnk" << true << QFileInfo(m_sourceFile).absoluteFilePath();
QTest::newRow("broken link") << "brokenlink.lnk" << true << QFileInfo("dummyfile").absoluteFilePath();
}
@@ -1390,7 +1397,7 @@ void tst_QFileInfo::ntfsJunctionPointsAndSymlinks_data()
}
{
//File symlinks
- QFileInfo target(QFINDTESTDATA("tst_qfileinfo.cpp"));
+ QFileInfo target(m_sourceFile);
QString absTarget = QDir::toNativeSeparators(target.absoluteFilePath());
QString absSymlink = QDir::toNativeSeparators(pwd.absolutePath()).append("\\abs_symlink.cpp");
QString relTarget = QDir::toNativeSeparators(pwd.relativeFilePath(target.absoluteFilePath()));
@@ -1447,10 +1454,22 @@ void tst_QFileInfo::ntfsJunctionPointsAndSymlinks()
QFETCH(QString, canonicalFilePath);
QFileInfo fi(path);
- QCOMPARE(fi.isSymLink(), isSymLink);
+ const bool actualIsSymLink = fi.isSymLink();
+ const QString actualSymLinkTarget = isSymLink ? fi.symLinkTarget() : QString();
+ const QString actualCanonicalFilePath = isSymLink ? fi.canonicalFilePath() : QString();
+ // Ensure that junctions, mountpoints are removed. If this fails, do not remove
+ // temporary directory to prevent it from trashing the system.
+ if (fi.isDir()) {
+ if (!QDir().rmdir(fi.fileName())) {
+ qWarning("Unable to remove NTFS junction '%s'', keeping '%s'.",
+ qPrintable(fi.fileName()), qPrintable(QDir::toNativeSeparators(m_dir.path())));
+ m_dir.setAutoRemove(false);
+ }
+ }
+ QCOMPARE(actualIsSymLink, isSymLink);
if (isSymLink) {
- QCOMPARE(fi.symLinkTarget(), linkTarget);
- QCOMPARE(fi.canonicalFilePath(), canonicalFilePath);
+ QCOMPARE(actualSymLinkTarget, linkTarget);
+ QCOMPARE(actualCanonicalFilePath, canonicalFilePath);
}
}
@@ -1499,7 +1518,7 @@ void tst_QFileInfo::isWritable()
#if defined (Q_OS_BLACKBERRY)
// The Blackberry filesystem is read-only
QVERIFY(!QFileInfo("/etc/passwd").isWritable());
-#elif defined (Q_OS_UNIX)
+#elif defined (Q_OS_UNIX) && !defined(Q_OS_VXWORKS) // VxWorks does not have users/groups
if (::getuid() == 0)
QVERIFY(QFileInfo("/etc/passwd").isWritable());
else
@@ -1698,7 +1717,7 @@ QT_END_NAMESPACE
void tst_QFileInfo::owner()
{
QString userName;
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_VXWORKS)
{
passwd *user = getpwuid(geteuid());
QVERIFY(user);
@@ -1761,7 +1780,7 @@ void tst_QFileInfo::owner()
void tst_QFileInfo::group()
{
QString expected;
-#if defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_VXWORKS)
struct group *gr;
gid_t gid = getegid();
diff --git a/tests/auto/corelib/io/qlockfile/qlockfile.pro b/tests/auto/corelib/io/qlockfile/qlockfile.pro
new file mode 100644
index 0000000000..91f104305c
--- /dev/null
+++ b/tests/auto/corelib/io/qlockfile/qlockfile.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+
+SUBDIRS += tst_qlockfile.pro qlockfiletesthelper/qlockfile_test_helper.pro
diff --git a/tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper.cpp b/tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper.cpp
new file mode 100644
index 0000000000..63f6291034
--- /dev/null
+++ b/tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper.cpp
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 David Faure <faure+bluesystems@kde.org>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <QDebug>
+#include <QCoreApplication>
+#include <QLockFile>
+#include <QThread>
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ if (argc <= 1)
+ return -1;
+
+ const QString lockName = QString::fromLocal8Bit(argv[1]);
+
+ QString option;
+ if (argc > 2)
+ option = QString::fromLocal8Bit(argv[2]);
+
+ if (option == "-crash") {
+ QLockFile *lockFile = new QLockFile(lockName);
+ lockFile->lock();
+ // leak the lockFile on purpose, so that the lock remains!
+ return 0;
+ } else if (option == "-busy") {
+ QLockFile lockFile(lockName);
+ lockFile.lock();
+ QThread::msleep(500);
+ return 0;
+ } else {
+ QLockFile lockFile(lockName);
+ if (lockFile.isLocked()) // cannot happen, before calling lock or tryLock
+ return QLockFile::UnknownError;
+
+ lockFile.tryLock();
+ return lockFile.error();
+ }
+}
diff --git a/tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper.pro b/tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper.pro
new file mode 100644
index 0000000000..3ac3be9c9b
--- /dev/null
+++ b/tests/auto/corelib/io/qlockfile/qlockfiletesthelper/qlockfile_test_helper.pro
@@ -0,0 +1,7 @@
+TARGET = qlockfile_test_helper
+SOURCES += qlockfile_test_helper.cpp
+
+CONFIG += console
+CONFIG -= app_bundle
+QT = core
+DESTDIR = ./
diff --git a/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp b/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp
new file mode 100644
index 0000000000..c0bf77cfb2
--- /dev/null
+++ b/tests/auto/corelib/io/qlockfile/tst_qlockfile.cpp
@@ -0,0 +1,379 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 David Faure <faure+bluesystems@kde.org>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+#include <QtConcurrentRun>
+#include <qlockfile.h>
+#include <qtemporarydir.h>
+
+class tst_QLockFile : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void initTestCase();
+ void lockUnlock();
+ void lockOutOtherProcess();
+ void lockOutOtherThread();
+ void waitForLock_data();
+ void waitForLock();
+ void staleLockFromCrashedProcess_data();
+ void staleLockFromCrashedProcess();
+ void staleShortLockFromBusyProcess();
+ void staleLongLockFromBusyProcess();
+ void staleLockRace();
+ void noPermissions();
+
+public:
+ QString m_helperApp;
+ QTemporaryDir dir;
+};
+
+void tst_QLockFile::initTestCase()
+{
+#ifdef QT_NO_PROCESS
+ QSKIP("This test requires QProcess support");
+#else
+ // chdir to our testdata path and execute helper apps relative to that.
+ QString testdata_dir = QFileInfo(QFINDTESTDATA("qlockfiletesthelper")).absolutePath();
+ QVERIFY2(QDir::setCurrent(testdata_dir), qPrintable("Could not chdir to " + testdata_dir));
+ m_helperApp = "qlockfiletesthelper/qlockfile_test_helper";
+#endif
+}
+
+void tst_QLockFile::lockUnlock()
+{
+ const QString fileName = dir.path() + "/lock1";
+ QVERIFY(!QFile(fileName).exists());
+ QLockFile lockFile(fileName);
+ QVERIFY(lockFile.lock());
+ QVERIFY(lockFile.isLocked());
+ QCOMPARE(int(lockFile.error()), int(QLockFile::NoError));
+ QVERIFY(QFile::exists(fileName));
+
+ // Recursive locking is not allowed
+ // (can't test lock() here, it would wait forever)
+ QVERIFY(!lockFile.tryLock());
+ QCOMPARE(int(lockFile.error()), int(QLockFile::LockFailedError));
+ qint64 pid;
+ QString hostname, appname;
+ QVERIFY(lockFile.getLockInfo(&pid, &hostname, &appname));
+ QCOMPARE(pid, QCoreApplication::applicationPid());
+ QCOMPARE(appname, qAppName());
+ QVERIFY(!lockFile.tryLock(200));
+ QCOMPARE(int(lockFile.error()), int(QLockFile::LockFailedError));
+
+ // Unlock deletes the lock file
+ lockFile.unlock();
+ QCOMPARE(int(lockFile.error()), int(QLockFile::NoError));
+ QVERIFY(!lockFile.isLocked());
+ QVERIFY(!QFile::exists(fileName));
+}
+
+void tst_QLockFile::lockOutOtherProcess()
+{
+ // Lock
+ const QString fileName = dir.path() + "/lockOtherProcess";
+ QLockFile lockFile(fileName);
+ QVERIFY(lockFile.lock());
+
+ // Other process can't acquire lock
+ QProcess proc;
+ proc.start(m_helperApp, QStringList() << fileName);
+ QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
+ QVERIFY(proc.waitForFinished());
+ QCOMPARE(proc.exitCode(), int(QLockFile::LockFailedError));
+
+ // Unlock
+ lockFile.unlock();
+ QVERIFY(!QFile::exists(fileName));
+
+ // Other process can now acquire lock
+ int ret = QProcess::execute(m_helperApp, QStringList() << fileName);
+ QCOMPARE(ret, int(QLockFile::NoError));
+ // Lock doesn't survive process though (on clean exit)
+ QVERIFY(!QFile::exists(fileName));
+}
+
+static QLockFile::LockError tryLockFromThread(const QString &fileName)
+{
+ QLockFile lockInThread(fileName);
+ lockInThread.tryLock();
+ return lockInThread.error();
+}
+
+void tst_QLockFile::lockOutOtherThread()
+{
+ const QString fileName = dir.path() + "/lockOtherThread";
+ QLockFile lockFile(fileName);
+ QVERIFY(lockFile.lock());
+
+ // Other thread can't acquire lock
+ QFuture<QLockFile::LockError> ret = QtConcurrent::run<QLockFile::LockError>(tryLockFromThread, fileName);
+ QCOMPARE(ret.result(), QLockFile::LockFailedError);
+
+ lockFile.unlock();
+
+ // Now other thread can acquire lock
+ QFuture<QLockFile::LockError> ret2 = QtConcurrent::run<QLockFile::LockError>(tryLockFromThread, fileName);
+ QCOMPARE(ret2.result(), QLockFile::NoError);
+}
+
+static bool lockFromThread(const QString &fileName, int sleepMs, QSemaphore *semThreadReady, QSemaphore *semMainThreadDone)
+{
+ QLockFile lockFile(fileName);
+ if (!lockFile.lock()) {
+ qWarning() << "Locking failed" << lockFile.error();
+ return false;
+ }
+ semThreadReady->release();
+ QThread::msleep(sleepMs);
+ semMainThreadDone->acquire();
+ lockFile.unlock();
+ return true;
+}
+
+void tst_QLockFile::waitForLock_data()
+{
+ QTest::addColumn<int>("testNumber");
+ QTest::addColumn<int>("threadSleepMs");
+ QTest::addColumn<bool>("releaseEarly");
+ QTest::addColumn<int>("tryLockTimeout");
+ QTest::addColumn<bool>("expectedResult");
+
+ int tn = 0; // test number
+ QTest::newRow("wait_forever_succeeds") << ++tn << 500 << true << -1 << true;
+ QTest::newRow("wait_longer_succeeds") << ++tn << 500 << true << 1000 << true;
+ QTest::newRow("wait_zero_fails") << ++tn << 500 << false << 0 << false;
+ QTest::newRow("wait_not_enough_fails") << ++tn << 500 << false << 100 << false;
+}
+
+void tst_QLockFile::waitForLock()
+{
+ QFETCH(int, testNumber);
+ QFETCH(int, threadSleepMs);
+ QFETCH(bool, releaseEarly);
+ QFETCH(int, tryLockTimeout);
+ QFETCH(bool, expectedResult);
+
+ const QString fileName = dir.path() + "/waitForLock" + QString::number(testNumber);
+ QLockFile lockFile(fileName);
+ QSemaphore semThreadReady, semMainThreadDone;
+ // Lock file from a thread
+ QFuture<bool> ret = QtConcurrent::run<bool>(lockFromThread, fileName, threadSleepMs, &semThreadReady, &semMainThreadDone);
+ semThreadReady.acquire();
+
+ if (releaseEarly) // let the thread release the lock after threadSleepMs
+ semMainThreadDone.release();
+
+ QCOMPARE(lockFile.tryLock(tryLockTimeout), expectedResult);
+ if (expectedResult)
+ QCOMPARE(int(lockFile.error()), int(QLockFile::NoError));
+ else
+ QCOMPARE(int(lockFile.error()), int(QLockFile::LockFailedError));
+
+ if (!releaseEarly) // only let the thread release the lock now
+ semMainThreadDone.release();
+
+ QVERIFY(ret); // waits for the thread to finish
+}
+
+void tst_QLockFile::staleLockFromCrashedProcess_data()
+{
+ QTest::addColumn<int>("staleLockTime");
+
+ // Test both use cases for QLockFile, should make no difference here.
+ QTest::newRow("short") << 30000;
+ QTest::newRow("long") << 0;
+}
+
+void tst_QLockFile::staleLockFromCrashedProcess()
+{
+ QFETCH(int, staleLockTime);
+ const QString fileName = dir.path() + "/staleLockFromCrashedProcess";
+
+ int ret = QProcess::execute(m_helperApp, QStringList() << fileName << "-crash");
+ QCOMPARE(ret, int(QLockFile::NoError));
+ QTRY_VERIFY(QFile::exists(fileName));
+
+ QLockFile secondLock(fileName);
+ secondLock.setStaleLockTime(staleLockTime);
+ // tryLock detects and removes the stale lock (since the PID is dead)
+#ifdef Q_OS_WIN
+ // It can take a bit of time on Windows, though.
+ QVERIFY(secondLock.tryLock(30000));
+#else
+ QVERIFY(secondLock.tryLock());
+#endif
+ QCOMPARE(int(secondLock.error()), int(QLockFile::NoError));
+}
+
+void tst_QLockFile::staleShortLockFromBusyProcess()
+{
+ const QString fileName = dir.path() + "/staleLockFromBusyProcess";
+
+ QProcess proc;
+ proc.start(m_helperApp, QStringList() << fileName << "-busy");
+ QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
+ QTRY_VERIFY(QFile::exists(fileName));
+
+ QLockFile secondLock(fileName);
+ QVERIFY(!secondLock.tryLock()); // held by other process
+ QCOMPARE(int(secondLock.error()), int(QLockFile::LockFailedError));
+ qint64 pid;
+ QString hostname, appname;
+ QTRY_VERIFY(secondLock.getLockInfo(&pid, &hostname, &appname));
+#ifdef Q_OS_UNIX
+ QCOMPARE(pid, proc.pid());
+#endif
+
+ secondLock.setStaleLockTime(100);
+ QTest::qSleep(100); // make the lock stale
+ // We can't "steal" (delete+recreate) a lock file from a running process
+ // until the file descriptor is closed.
+ QVERIFY(!secondLock.tryLock());
+
+ proc.waitForFinished();
+ QVERIFY(secondLock.tryLock());
+}
+
+void tst_QLockFile::staleLongLockFromBusyProcess()
+{
+ const QString fileName = dir.path() + "/staleLockFromBusyProcess";
+
+ QProcess proc;
+ proc.start(m_helperApp, QStringList() << fileName << "-busy");
+ QVERIFY2(proc.waitForStarted(), qPrintable(proc.errorString()));
+ QTRY_VERIFY(QFile::exists(fileName));
+
+ QLockFile secondLock(fileName);
+ secondLock.setStaleLockTime(0);
+ QVERIFY(!secondLock.tryLock(100)); // never stale
+ QCOMPARE(int(secondLock.error()), int(QLockFile::LockFailedError));
+ qint64 pid;
+ QTRY_VERIFY(secondLock.getLockInfo(&pid, NULL, NULL));
+ QVERIFY(pid > 0);
+
+ // As long as the other process is running, we can't remove the lock file
+ QVERIFY(!secondLock.removeStaleLockFile());
+
+ proc.waitForFinished();
+}
+
+static QString tryStaleLockFromThread(const QString &fileName)
+{
+ QLockFile lockInThread(fileName + ".lock");
+ lockInThread.setStaleLockTime(1000);
+ if (!lockInThread.lock())
+ return "Error locking: " + QString::number(lockInThread.error());
+
+ // The concurrent use of the file below (write, read, delete) is protected by the lock file above.
+ // (provided that it doesn't become stale due to this operation taking too long)
+ QFile theFile(fileName);
+ if (!theFile.open(QIODevice::WriteOnly))
+ return "Couldn't open for write";
+ theFile.write("Hello world");
+ theFile.flush();
+ theFile.close();
+ QFile reader(fileName);
+ if (!reader.open(QIODevice::ReadOnly))
+ return "Couldn't open for read";
+ const QByteArray read = reader.readAll();
+ if (read != "Hello world")
+ return "File didn't have the expected contents:" + read;
+ reader.remove();
+ return QString();
+}
+
+void tst_QLockFile::staleLockRace()
+{
+ // Multiple threads notice a stale lock at the same time
+ // Only one thread should delete it, otherwise a race will ensue
+ const QString fileName = dir.path() + "/sharedFile";
+ const QString lockName = fileName + ".lock";
+ int ret = QProcess::execute(m_helperApp, QStringList() << lockName << "-crash");
+ QCOMPARE(ret, int(QLockFile::NoError));
+ QTRY_VERIFY(QFile::exists(lockName));
+
+ QThreadPool::globalInstance()->setMaxThreadCount(10);
+ QFutureSynchronizer<QString> synchronizer;
+ for (int i = 0; i < 8; ++i)
+ synchronizer.addFuture(QtConcurrent::run<QString>(tryStaleLockFromThread, fileName));
+ synchronizer.waitForFinished();
+ foreach (const QFuture<QString> &future, synchronizer.futures())
+ QVERIFY2(future.result().isEmpty(), qPrintable(future.result()));
+}
+
+void tst_QLockFile::noPermissions()
+{
+#ifdef Q_OS_WIN
+ // A readonly directory still allows us to create files, on Windows.
+ QSKIP("No permission testing on Windows");
+#endif
+ // Restore permissions so that the QTemporaryDir cleanup can happen
+ class PermissionRestorer
+ {
+ QString m_path;
+ public:
+ PermissionRestorer(const QString& path)
+ : m_path(path)
+ {}
+
+ ~PermissionRestorer()
+ {
+ QFile file(m_path);
+ file.setPermissions(QFile::Permissions(QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner));
+ }
+ };
+
+ const QString fileName = dir.path() + "/staleLock";
+ QFile dirAsFile(dir.path()); // I have to use QFile to change a dir's permissions...
+ QVERIFY2(dirAsFile.setPermissions(QFile::Permissions(0)), qPrintable(dir.path())); // no permissions
+ PermissionRestorer permissionRestorer(dir.path());
+
+ QLockFile lockFile(fileName);
+ QVERIFY(!lockFile.lock());
+ QCOMPARE(int(lockFile.error()), int(QLockFile::PermissionError));
+}
+
+QTEST_MAIN(tst_QLockFile)
+#include "tst_qlockfile.moc"
diff --git a/tests/auto/corelib/io/qlockfile/tst_qlockfile.pro b/tests/auto/corelib/io/qlockfile/tst_qlockfile.pro
new file mode 100644
index 0000000000..2f7009b736
--- /dev/null
+++ b/tests/auto/corelib/io/qlockfile/tst_qlockfile.pro
@@ -0,0 +1,6 @@
+CONFIG += testcase
+CONFIG -= app_bundle
+TARGET = tst_qlockfile
+SOURCES += tst_qlockfile.cpp
+
+QT = core testlib concurrent
diff --git a/tests/auto/corelib/io/qprocess/testForwarding/testForwarding.pro b/tests/auto/corelib/io/qprocess/testForwarding/testForwarding.pro
index 271c7ead13..45b498c32a 100644
--- a/tests/auto/corelib/io/qprocess/testForwarding/testForwarding.pro
+++ b/tests/auto/corelib/io/qprocess/testForwarding/testForwarding.pro
@@ -2,3 +2,4 @@ SOURCES = main.cpp
CONFIG -= app_bundle
CONFIG += console
DESTDIR = ./
+QT = core
diff --git a/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
index 270666deb6..df96e1cbf3 100644
--- a/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
@@ -50,8 +50,8 @@ int APIENTRY WinMain(HINSTANCE /* hInstance */,
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
-
- HANDLE hStderr = GetStdHandle(STD_ERROR_HANDLE);
+
+ HANDLE hStderr = GetStdHandle(STD_ERROR_HANDLE);
for (;;) {
diff --git a/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro b/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro
index f7c57abc37..f7bb0985a3 100644
--- a/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessNormal/testProcessNormal.pro
@@ -4,3 +4,4 @@ CONFIG -= qt app_bundle
DESTDIR = ./
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+QT = core
diff --git a/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro b/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro
index 3940ddbf98..2de4534896 100644
--- a/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessOutput/testProcessOutput.pro
@@ -3,3 +3,4 @@ CONFIG -= qt app_bundle
CONFIG += console
DESTDIR = ./
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+QT = core
diff --git a/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro
index 43db95e675..8b16f65e34 100644
--- a/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/twospaces.pro
@@ -6,3 +6,4 @@ OBJECTS_DIR = $${OBJECTS_DIR}-twospaces
TARGET = "two space s"
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+QT = core
diff --git a/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro
index 86d26c2c4a..d425d5569e 100644
--- a/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro
+++ b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/testSetWorkingDirectory.pro
@@ -3,3 +3,4 @@ CONFIG += console
CONFIG -= app_bundle
DESTDIR = ./
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+QT = core
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp b/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
index 02cc31168b..c7f5f88f9c 100644
--- a/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
@@ -55,7 +55,7 @@ int main()
printf("Ready\n");
fflush(stdout);
-
+
for (int i = 0; i < 5; ++i)
sleep(1);
return 0;
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp b/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
index bed8d921b3..e478a18bd6 100644
--- a/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
@@ -53,6 +53,6 @@ int main()
if (msg.message == WM_CLOSE)
PostQuitMessage(0);
}
-
+
return int(msg.wParam);
}
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro b/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro
index c5fb286d0c..7f3b8ade3e 100644
--- a/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/testSoftExit.pro
@@ -10,3 +10,4 @@ CONFIG -= qt app_bundle
CONFIG += console
DESTDIR = ./
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+QT = core
diff --git a/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro b/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro
index d0848e3303..b7213ae507 100644
--- a/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro
+++ b/tests/auto/corelib/io/qprocess/testSpaceInName/testSpaceInName.pro
@@ -7,3 +7,4 @@ mac {
CONFIG -= app_bundle
}
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
+QT = core
diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
index 7965d1d431..f01e319872 100644
--- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
+++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
@@ -81,6 +81,7 @@ private slots:
void getSetCheck();
void constructing();
void simpleStart();
+ void startWithOpen();
void execute();
void startDetached();
void crashTest();
@@ -283,6 +284,25 @@ void tst_QProcess::simpleStart()
QCOMPARE(qvariant_cast<QProcess::ProcessState>(spy.at(1).at(0)), QProcess::Running);
QCOMPARE(qvariant_cast<QProcess::ProcessState>(spy.at(2).at(0)), QProcess::NotRunning);
}
+
+//-----------------------------------------------------------------------------
+void tst_QProcess::startWithOpen()
+{
+ QProcess p;
+ QTest::ignoreMessage(QtWarningMsg, "QProcess::start: program not set");
+ QCOMPARE(p.open(QIODevice::ReadOnly), false);
+
+ p.setProgram("testProcessNormal/testProcessNormal");
+ QCOMPARE(p.program(), QString("testProcessNormal/testProcessNormal"));
+
+ p.setArguments(QStringList() << "arg1" << "arg2");
+ QCOMPARE(p.arguments().size(), 2);
+
+ QVERIFY(p.open(QIODevice::ReadOnly));
+ QCOMPARE(p.openMode(), QIODevice::ReadOnly);
+ QVERIFY(p.waitForFinished(5000));
+}
+
//-----------------------------------------------------------------------------
void tst_QProcess::execute()
{
@@ -1256,7 +1276,6 @@ void tst_QProcess::waitForBytesWrittenInABytesWrittenSlot()
process->start("testProcessEcho/testProcessEcho");
QVERIFY(process->waitForStarted(5000));
- qRegisterMetaType<qint64>("qint64");
QSignalSpy spy(process, SIGNAL(bytesWritten(qint64)));
QVERIFY(spy.isValid());
process->write("f");
diff --git a/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp b/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
index 11dbc1e9c1..515a10426c 100644
--- a/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
+++ b/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
@@ -402,7 +402,7 @@ void tst_QResourceEngine::checkUnregisterResource_data()
QTest::addColumn<int>("size");
QTest::newRow("currentdir.txt") << QFINDTESTDATA("runtime_resource.rcc") << QString("/check_unregister/")
- << QString(":/check_unregister/runtime_resource/test/abc/123/+++/currentdir.txt")
+ << QString(":/check_unregister/runtime_resource/test/abc/123/+++/currentdir.txt")
<< (int)QFileInfo(QFINDTESTDATA("testqrc/currentdir.txt")).size();
}
diff --git a/tests/auto/corelib/io/qsavefile/qsavefile.pro b/tests/auto/corelib/io/qsavefile/qsavefile.pro
new file mode 100644
index 0000000000..36db000fa7
--- /dev/null
+++ b/tests/auto/corelib/io/qsavefile/qsavefile.pro
@@ -0,0 +1,5 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qsavefile
+QT = core testlib
+SOURCES = tst_qsavefile.cpp
+TESTDATA += tst_qsavefile.cpp
diff --git a/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp b/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp
new file mode 100644
index 0000000000..5ef4b11e8a
--- /dev/null
+++ b/tests/auto/corelib/io/qsavefile/tst_qsavefile.cpp
@@ -0,0 +1,272 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 David Faure <faure@kde.org>
+** 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 <QtTest/QtTest>
+#include <qcoreapplication.h>
+#include <qstring.h>
+#include <qtemporaryfile.h>
+#include <qfile.h>
+#include <qdir.h>
+#include <qset.h>
+
+#if defined(Q_OS_UNIX)
+# include <unistd.h> // for geteuid
+# include <sys/types.h>
+#endif
+
+#if defined(Q_OS_WIN)
+# include <windows.h>
+#endif
+
+class tst_QSaveFile : public QObject
+{
+ Q_OBJECT
+public slots:
+
+private slots:
+ void transactionalWrite();
+ void textStreamManualFlush();
+ void textStreamAutoFlush();
+ void saveTwice();
+ void transactionalWriteNoPermissionsOnDir();
+ void transactionalWriteNoPermissionsOnFile();
+ void transactionalWriteCanceled();
+ void transactionalWriteErrorRenaming();
+};
+
+void tst_QSaveFile::transactionalWrite()
+{
+ QTemporaryDir dir;
+ const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
+ QFile::remove(targetFile);
+ QSaveFile file(targetFile);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QVERIFY(file.isOpen());
+ QCOMPARE(file.fileName(), targetFile);
+ QVERIFY(!QFile::exists(targetFile));
+
+ QCOMPARE(file.write("Hello"), Q_INT64_C(5));
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(!QFile::exists(targetFile));
+
+ QVERIFY(file.commit());
+ QVERIFY(QFile::exists(targetFile));
+ QCOMPARE(file.fileName(), targetFile);
+
+ QFile reader(targetFile);
+ QVERIFY(reader.open(QIODevice::ReadOnly));
+ QCOMPARE(QString::fromLatin1(reader.readAll()), QString::fromLatin1("Hello"));
+}
+
+void tst_QSaveFile::saveTwice()
+{
+ // Check that we can reuse a QSaveFile object
+ // (and test the case of an existing target file)
+ QTemporaryDir dir;
+ const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
+ QSaveFile file(targetFile);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QCOMPARE(file.write("Hello"), Q_INT64_C(5));
+ QVERIFY2(file.commit(), qPrintable(file.errorString()));
+
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QCOMPARE(file.write("World"), Q_INT64_C(5));
+ QVERIFY2(file.commit(), qPrintable(file.errorString()));
+
+ QFile reader(targetFile);
+ QVERIFY(reader.open(QIODevice::ReadOnly));
+ QCOMPARE(QString::fromLatin1(reader.readAll()), QString::fromLatin1("World"));
+}
+
+void tst_QSaveFile::textStreamManualFlush()
+{
+ QTemporaryDir dir;
+ const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
+ QSaveFile file(targetFile);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+
+ QTextStream ts(&file);
+ ts << "Manual flush";
+ ts.flush();
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(!QFile::exists(targetFile));
+
+ QVERIFY(file.commit());
+ QFile reader(targetFile);
+ QVERIFY(reader.open(QIODevice::ReadOnly));
+ QCOMPARE(QString::fromLatin1(reader.readAll().constData()), QString::fromLatin1("Manual flush"));
+ QFile::remove(targetFile);
+}
+
+void tst_QSaveFile::textStreamAutoFlush()
+{
+ QTemporaryDir dir;
+ const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
+ QSaveFile file(targetFile);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+
+ QTextStream ts(&file);
+ ts << "Auto-flush.";
+ // no flush
+ QVERIFY(file.commit()); // QIODevice::close will emit aboutToClose, which will flush the stream
+ QFile reader(targetFile);
+ QVERIFY(reader.open(QIODevice::ReadOnly));
+ QCOMPARE(QString::fromLatin1(reader.readAll().constData()), QString::fromLatin1("Auto-flush."));
+ QFile::remove(targetFile);
+}
+
+void tst_QSaveFile::transactionalWriteNoPermissionsOnDir()
+{
+#ifdef Q_OS_UNIX
+ if (::geteuid() == 0)
+ QSKIP("not valid running this test as root");
+
+ // You can write into /dev/zero, but you can't create a /dev/zero.XXXXXX temp file.
+ QSaveFile file("/dev/zero");
+ if (!QDir("/dev").exists())
+ QSKIP("/dev doesn't exist on this system");
+
+ QVERIFY(!file.open(QIODevice::WriteOnly));
+ QCOMPARE((int)file.error(), (int)QFile::OpenError);
+ QVERIFY(!file.commit());
+#endif
+}
+
+void tst_QSaveFile::transactionalWriteNoPermissionsOnFile()
+{
+ // Setup an existing but readonly file
+ QTemporaryDir dir;
+ const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
+ QFile file(targetFile);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QCOMPARE(file.write("Hello"), Q_INT64_C(5));
+ file.close();
+ file.setPermissions(QFile::ReadOwner);
+ QVERIFY(!file.open(QIODevice::WriteOnly));
+
+ // Try saving into it
+ {
+ QSaveFile saveFile(targetFile);
+ QVERIFY(!saveFile.open(QIODevice::WriteOnly)); // just like QFile
+ }
+ QVERIFY(file.exists());
+}
+
+void tst_QSaveFile::transactionalWriteCanceled()
+{
+ QTemporaryDir dir;
+ const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
+ QFile::remove(targetFile);
+ QSaveFile file(targetFile);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+
+ QTextStream ts(&file);
+ ts << "This writing operation will soon be canceled.\n";
+ ts.flush();
+ QCOMPARE(file.error(), QFile::NoError);
+ QVERIFY(!QFile::exists(targetFile));
+
+ // We change our mind, let's abort writing
+ file.cancelWriting();
+
+ QVERIFY(!file.commit());
+
+ QVERIFY(!QFile::exists(targetFile)); // temp file was discarded
+ QCOMPARE(file.fileName(), targetFile);
+}
+
+void tst_QSaveFile::transactionalWriteErrorRenaming()
+{
+ QTemporaryDir dir;
+ const QString targetFile = dir.path() + QString::fromLatin1("/outfile");
+ QSaveFile file(targetFile);
+ QVERIFY(file.open(QIODevice::WriteOnly));
+ QCOMPARE(file.write("Hello"), qint64(5));
+ QVERIFY(!QFile::exists(targetFile));
+
+ // Restore permissions so that the QTemporaryDir cleanup can happen
+ class PermissionRestorer
+ {
+ public:
+ PermissionRestorer(const QString& path)
+ : m_path(path)
+ {}
+
+ ~PermissionRestorer()
+ {
+ QFile file(m_path);
+#ifdef Q_OS_UNIX
+ file.setPermissions(QFile::Permissions(QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner));
+#else
+ file.setPermissions(QFile::WriteOwner);
+ file.remove();
+#endif
+ }
+
+ private:
+ QString m_path;
+ };
+
+#ifdef Q_OS_UNIX
+ // Make rename() fail for lack of permissions in the directory
+ QFile dirAsFile(dir.path()); // yay, I have to use QFile to change a dir's permissions...
+ QVERIFY(dirAsFile.setPermissions(QFile::Permissions(0))); // no permissions
+ PermissionRestorer permissionRestorer(dir.path());
+#else
+ // Windows: Make rename() fail for lack of permissions on an existing target file
+ QFile existingTargetFile(targetFile);
+ QVERIFY(existingTargetFile.open(QIODevice::WriteOnly));
+ QCOMPARE(file.write("Target"), qint64(6));
+ existingTargetFile.close();
+ QVERIFY(existingTargetFile.setPermissions(QFile::ReadOwner));
+ PermissionRestorer permissionRestorer(targetFile);
+#endif
+
+ // The saving should fail.
+ QVERIFY(!file.commit());
+#ifdef Q_OS_UNIX
+ QVERIFY(!QFile::exists(targetFile)); // renaming failed
+#endif
+ QCOMPARE(file.error(), QFile::RenameError);
+}
+
+QTEST_MAIN(tst_QSaveFile)
+#include "tst_qsavefile.moc"
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
index f152c48c7d..c2909cf7c5 100644
--- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -694,7 +694,9 @@ void tst_QSettings::testErrorHandling()
#ifdef Q_OS_WIN
QSKIP("Windows doesn't support most file modes, including read-only directories, so this test is moot.");
#elif defined(Q_OS_UNIX)
+#if !defined(Q_OS_VXWORKS) // VxWorks does not have users/groups
if (::getuid() == 0)
+#endif
QSKIP("Running this test as root doesn't work, since file perms do not bother him");
#else
QFETCH(int, filePerms);
diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
index 1f59336fc6..898aefffd3 100644
--- a/tests/auto/corelib/io/qurl/tst_qurl.cpp
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
@@ -79,6 +79,8 @@ private slots:
void toString();
void toString_constructed_data();
void toString_constructed();
+ void toAndFromStringList_data();
+ void toAndFromStringList();
void isParentOf_data();
void isParentOf();
void toLocalFile_data();
@@ -948,6 +950,25 @@ void tst_QUrl::toString()
QCOMPARE(url.toString(QUrl::FormattingOptions(options)), string);
}
+void tst_QUrl::toAndFromStringList_data()
+{
+ QTest::addColumn<QStringList>("strings");
+
+ QTest::newRow("empty") << QStringList();
+ QTest::newRow("local") << (QStringList() << "file:///tmp" << "file:///");
+ QTest::newRow("remote") << (QStringList() << "http://qt-project.org");
+}
+
+void tst_QUrl::toAndFromStringList()
+{
+ QFETCH(QStringList, strings);
+
+ const QList<QUrl> urls = QUrl::fromStringList(strings);
+ QCOMPARE(urls.count(), strings.count());
+ const QStringList converted = QUrl::toStringList(urls);
+ QCOMPARE(converted, strings);
+}
+
//### more tests ... what do we expect ...
void tst_QUrl::isParentOf_data()
{
@@ -2163,33 +2184,52 @@ void tst_QUrl::tldRestrictions_data()
// current whitelist
QTest::newRow("ac") << QString("ac") << true;
+ QTest::newRow("ar") << QString("ar") << true;
+ QTest::newRow("asia") << QString("asia") << true;
QTest::newRow("at") << QString("at") << true;
+ QTest::newRow("biz") << QString("biz") << true;
QTest::newRow("br") << QString("br") << true;
QTest::newRow("cat") << QString("cat") << true;
QTest::newRow("ch") << QString("ch") << true;
QTest::newRow("cl") << QString("cl") << true;
QTest::newRow("cn") << QString("cn") << true;
+ QTest::newRow("com") << QString("com") << true;
QTest::newRow("de") << QString("de") << true;
QTest::newRow("dk") << QString("dk") << true;
+ QTest::newRow("es") << QString("es") << true;
QTest::newRow("fi") << QString("fi") << true;
+ QTest::newRow("gr") << QString("gr") << true;
QTest::newRow("hu") << QString("hu") << true;
+ QTest::newRow("il") << QString("il") << true;
QTest::newRow("info") << QString("info") << true;
QTest::newRow("io") << QString("io") << true;
+ QTest::newRow("is") << QString("is") << true;
+ QTest::newRow("ir") << QString("ir") << true;
QTest::newRow("jp") << QString("jp") << true;
QTest::newRow("kr") << QString("kr") << true;
QTest::newRow("li") << QString("li") << true;
QTest::newRow("lt") << QString("lt") << true;
+ QTest::newRow("lu") << QString("lu") << true;
+ QTest::newRow("lv") << QString("lv") << true;
QTest::newRow("museum") << QString("museum") << true;
+ QTest::newRow("name") << QString("name") << true;
+ QTest::newRow("net") << QString("name") << true;
QTest::newRow("no") << QString("no") << true;
+ QTest::newRow("nu") << QString("nu") << true;
+ QTest::newRow("nz") << QString("nz") << true;
+ QTest::newRow("org") << QString("org") << true;
+ QTest::newRow("pl") << QString("pl") << true;
+ QTest::newRow("pr") << QString("pr") << true;
QTest::newRow("se") << QString("se") << true;
QTest::newRow("sh") << QString("sh") << true;
+ QTest::newRow("tel") << QString("tel") << true;
QTest::newRow("th") << QString("th") << true;
QTest::newRow("tm") << QString("tm") << true;
QTest::newRow("tw") << QString("tw") << true;
+ QTest::newRow("ua") << QString("ua") << true;
QTest::newRow("vn") << QString("vn") << true;
// known blacklists:
- QTest::newRow("com") << QString("com") << false;
QTest::newRow("foo") << QString("foo") << false;
}
@@ -2796,6 +2836,12 @@ void tst_QUrl::effectiveTLDs_data()
QTest::newRow("yes6") << QUrl::fromEncoded("http://www.com.com.cn") << ".com.cn";
QTest::newRow("yes7") << QUrl::fromEncoded("http://www.test.org.ws") << ".org.ws";
QTest::newRow("yes9") << QUrl::fromEncoded("http://www.com.co.uk.wallonie.museum") << ".wallonie.museum";
+ QTest::newRow("yes10") << QUrl::fromEncoded("http://www.com.evje-og-hornnes.no") << ".evje-og-hornnes.no";
+ QTest::newRow("yes11") << QUrl::fromEncoded("http://www.bla.kamijima.ehime.jp") << ".kamijima.ehime.jp";
+ QTest::newRow("yes12") << QUrl::fromEncoded("http://www.bla.kakuda.miyagi.jp") << ".kakuda.miyagi.jp";
+ QTest::newRow("yes13") << QUrl::fromEncoded("http://mypage.betainabox.com") << ".betainabox.com";
+ QTest::newRow("yes14") << QUrl::fromEncoded("http://mypage.rhcloud.com") << ".rhcloud.com";
+ QTest::newRow("yes15") << QUrl::fromEncoded("http://mypage.int.az") << ".int.az";
}
void tst_QUrl::effectiveTLDs()
diff --git a/tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp b/tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp
index 6ba659856c..fa3dec620a 100644
--- a/tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp
+++ b/tests/auto/corelib/io/qurlinternal/tst_qurlinternal.cpp
@@ -649,6 +649,20 @@ void tst_QUrlInternal::ace_testsuite_data()
<< "xn----rmckbbajlc6dj7bxne2c.xn--wgbh1c"
<< "."
<< egyptianIDN;
+
+ QString russianIDN = QString::fromUtf8("\321\217\320\275\320\264\320\265\320\272\321\201.\321\200\321\204");
+ QTest::newRow("russian-tld-ace")
+ << "xn--d1acpjx3f.xn--p1ai"
+ << "xn--d1acpjx3f.xn--p1ai"
+ << "."
+ << russianIDN;
+
+ QString taiwaneseIDN = QString::fromUtf8("\345\217\260\345\214\227\346\214\211\346\221\251.\345\217\260\347\201\243");
+ QTest::newRow("taiwanese-tld-ace")
+ << "xn--djrptm67aikb.xn--kpry57d"
+ << "xn--djrptm67aikb.xn--kpry57d"
+ << "."
+ << taiwaneseIDN;
}
void tst_QUrlInternal::ace_testsuite()
diff --git a/tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp b/tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp
index 6e2eeced05..bad77b1e06 100644
--- a/tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp
+++ b/tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp
@@ -251,21 +251,24 @@ void tst_QWinOverlappedIoNotifier::multipleOperations()
// start async read on client
QByteArray clientReadBuffer(377, Qt::Uninitialized);
- OVERLAPPED clientReadOverlapped = {0};
+ OVERLAPPED clientReadOverlapped;
+ ZeroMemory(&clientReadOverlapped, sizeof(clientReadOverlapped));
BOOL readSuccess = ReadFile(hClient, clientReadBuffer.data(), clientReadBuffer.size(),
NULL, &clientReadOverlapped);
QVERIFY(readSuccess || GetLastError() == ERROR_IO_PENDING);
// start async write client -> server
QByteArray clientDataToWrite(233, 'B');
- OVERLAPPED clientWriteOverlapped = {0};
+ OVERLAPPED clientWriteOverlapped;
+ ZeroMemory(&clientWriteOverlapped, sizeof(clientWriteOverlapped));
BOOL writeSuccess = WriteFile(hClient, clientDataToWrite.data(), clientDataToWrite.size(),
NULL, &clientWriteOverlapped);
QVERIFY(writeSuccess || GetLastError() == ERROR_IO_PENDING);
// start async write server -> client
QByteArray serverDataToWrite(144, 'A');
- OVERLAPPED serverOverlapped = {0};
+ OVERLAPPED serverOverlapped;
+ ZeroMemory(&serverOverlapped, sizeof(serverOverlapped));
writeSuccess = WriteFile(hServer, serverDataToWrite.data(), serverDataToWrite.size(),
NULL, &serverOverlapped);
QVERIFY(writeSuccess || GetLastError() == ERROR_IO_PENDING);
@@ -284,9 +287,9 @@ void tst_QWinOverlappedIoNotifier::multipleOperations()
QTRY_COMPARE(sink.notifications.count(), 2);
foreach (const NotifierSink::IOResult &r, sink.notifications) {
QCOMPARE(r.errorCode, DWORD(ERROR_SUCCESS));
- if (r.bytes == serverDataToWrite.count())
+ if (r.bytes == DWORD(serverDataToWrite.count()))
QCOMPARE(r.overlapped, &clientReadOverlapped);
- else if (r.bytes == clientDataToWrite.count())
+ else if (r.bytes == DWORD(clientDataToWrite.count()))
QCOMPARE(r.overlapped, &clientWriteOverlapped);
else
QVERIFY2(false, "Unexpected number of bytes received.");
diff --git a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
index 20bd4fa433..d2fb56ce02 100644
--- a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
+++ b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -467,9 +467,6 @@ typedef QPair<int, int> Position;
typedef QVector<QPair<int, int> > Selection;
typedef QVector<QVector<QString> > StringTable;
typedef QVector<QString> StringTableRow;
-Q_DECLARE_METATYPE(Position)
-Q_DECLARE_METATYPE(Selection)
-Q_DECLARE_METATYPE(StringTable)
static StringTableRow qStringTableRow(const QString &s1, const QString &s2, const QString &s3)
{
@@ -1922,8 +1919,6 @@ public:
void tst_QAbstractItemModel::testDataChanged()
{
- qRegisterMetaType<QVector<int> >();
-
CustomRoleModel model;
QSignalSpy withRoles(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)));
diff --git a/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp b/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
index c8cbacf76e..c385a02b9c 100644
--- a/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
+++ b/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
@@ -281,8 +281,6 @@ void tst_QAbstractProxyModel::revert()
// public void setSourceModel(QAbstractItemModel* sourceModel)
void tst_QAbstractProxyModel::setSourceModel()
{
- qRegisterMetaType<QAbstractItemModel*>();
-
SubQAbstractProxyModel model;
QCOMPARE(model.property("sourceModel"), QVariant::fromValue<QAbstractItemModel*>(0));
diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 02a4824c4b..4578bcdab6 100644
--- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -54,6 +54,8 @@ typedef QList<int> IntList;
typedef QPair<int, int> IntPair;
typedef QList<IntPair> IntPairList;
+Q_DECLARE_METATYPE(QList<QPersistentModelIndex>)
+
class tst_QSortFilterProxyModel : public QObject
{
Q_OBJECT
@@ -134,6 +136,7 @@ private slots:
void testMultipleProxiesWithSelection();
void mapSelectionFromSource();
+ void testResetInternalData();
void filteredColumns();
void headerDataChanged();
@@ -143,6 +146,8 @@ private slots:
void hierarchyFilterInvalidation();
void simpleFilterInvalidation();
+ void chainedProxyModelRoleNames();
+
protected:
void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
void checkHierarchy(const QStringList &data, const QAbstractItemModel *model);
@@ -174,9 +179,7 @@ tst_QSortFilterProxyModel::tst_QSortFilterProxyModel()
void tst_QSortFilterProxyModel::initTestCase()
{
- qRegisterMetaType<IntList>("IntList");
- qRegisterMetaType<IntPair>("IntPair");
- qRegisterMetaType<IntPairList>("IntPairList");
+ qRegisterMetaType<QList<QPersistentModelIndex> >();
m_model = new QStandardItemModel(0, 1);
m_proxy = new QSortFilterProxyModel();
m_proxy->setSourceModel(m_model);
@@ -3242,7 +3245,142 @@ void tst_QSortFilterProxyModel::resetInvalidate()
QCOMPARE(ok, works);
}
-Q_DECLARE_METATYPE(QList<QPersistentModelIndex>)
+/**
+ * A proxy which changes the background color for items ending in 'y' or 'r'
+ */
+class CustomDataProxy : public QSortFilterProxyModel
+{
+ Q_OBJECT
+
+public:
+ CustomDataProxy(QObject *parent = 0)
+ : QSortFilterProxyModel(parent)
+ {
+ setDynamicSortFilter(true);
+ }
+
+ void setSourceModel(QAbstractItemModel *sourceModel)
+ {
+ // It would be possible to use only the modelReset signal of the source model to clear
+ // the data in *this, however, this requires that the slot is connected
+ // before QSortFilterProxyModel::setSourceModel is called, and even then depends
+ // on the order of invocation of slots being the same as the order of connection.
+ // ie, not reliable.
+// connect(sourceModel, SIGNAL(modelReset()), SLOT(resetInternalData()));
+ QSortFilterProxyModel::setSourceModel(sourceModel);
+ // Making the connect after the setSourceModel call clears the data too late.
+// connect(sourceModel, SIGNAL(modelReset()), SLOT(resetInternalData()));
+
+ // This could be done in data(), but the point is to need to cache something in the proxy
+ // which needs to be cleared on reset.
+ for (int i = 0; i < sourceModel->rowCount(); ++i)
+ {
+ if (sourceModel->index(i, 0).data().toString().endsWith(QLatin1Char('y')))
+ {
+ m_backgroundColours.insert(i, Qt::blue);
+ } else if (sourceModel->index(i, 0).data().toString().endsWith(QLatin1Char('r')))
+ {
+ m_backgroundColours.insert(i, Qt::red);
+ }
+ }
+ }
+
+ QVariant data(const QModelIndex &index, int role) const
+ {
+ if (role != Qt::BackgroundRole)
+ return QSortFilterProxyModel::data(index, role);
+ return m_backgroundColours.value(index.row());
+ }
+
+private slots:
+ void resetInternalData()
+ {
+ m_backgroundColours.clear();
+ }
+
+private:
+ QHash<int, QColor> m_backgroundColours;
+};
+
+class ModelObserver : public QObject
+{
+ Q_OBJECT
+public:
+ ModelObserver(QAbstractItemModel *model, QObject *parent = 0)
+ : QObject(parent), m_model(model)
+ {
+ connect(m_model, SIGNAL(modelAboutToBeReset()), SLOT(modelAboutToBeReset()));
+ connect(m_model, SIGNAL(modelReset()), SLOT(modelReset()));
+ }
+
+public slots:
+ void modelAboutToBeReset()
+ {
+ int reds = 0, blues = 0;
+ for (int i = 0; i < m_model->rowCount(); ++i)
+ {
+ QColor color = m_model->index(i, 0).data(Qt::BackgroundRole).value<QColor>();
+ if (color == Qt::blue)
+ ++blues;
+ if (color == Qt::red)
+ ++reds;
+ }
+ QCOMPARE(blues, 11);
+ QCOMPARE(reds, 4);
+ }
+
+ void modelReset()
+ {
+ int reds = 0, blues = 0;
+ for (int i = 0; i < m_model->rowCount(); ++i)
+ {
+ QColor color = m_model->index(i, 0).data(Qt::BackgroundRole).value<QColor>();
+ if (color == Qt::blue)
+ ++blues;
+ if (color == Qt::red)
+ ++reds;
+ }
+ QCOMPARE(reds, 0);
+ QCOMPARE(blues, 0);
+ }
+
+private:
+ QAbstractItemModel * const m_model;
+
+};
+
+void tst_QSortFilterProxyModel::testResetInternalData()
+{
+
+ QStringListModel model(QStringList() << "Monday"
+ << "Tuesday"
+ << "Wednesday"
+ << "Thursday"
+ << "Friday"
+ << "January"
+ << "February"
+ << "March"
+ << "April"
+ << "May"
+ << "Saturday"
+ << "June"
+ << "Sunday"
+ << "July"
+ << "August"
+ << "September"
+ << "October"
+ << "November"
+ << "December");
+
+ CustomDataProxy proxy;
+ proxy.setSourceModel(&model);
+
+ ModelObserver observer(&proxy);
+
+ // Cause the source model to reset.
+ model.setStringList(QStringList() << "Spam" << "Eggs");
+
+}
void tst_QSortFilterProxyModel::testParentLayoutChanged()
{
@@ -3276,8 +3414,6 @@ void tst_QSortFilterProxyModel::testParentLayoutChanged()
proxy2.setSourceModel(&proxy);
proxy2.setObjectName("proxy2");
- qRegisterMetaType<QList<QPersistentModelIndex> >();
-
QSignalSpy dataChangedSpy(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex)));
QVERIFY(dataChangedSpy.isValid());
@@ -3411,8 +3547,6 @@ private:
void tst_QSortFilterProxyModel::moveSourceRows()
{
- qRegisterMetaType<QList<QPersistentModelIndex> >();
-
DynamicTreeModel model;
{
@@ -3635,6 +3769,45 @@ void tst_QSortFilterProxyModel::simpleFilterInvalidation()
model.insertRow(0, new QStandardItem("extra"));
}
+class CustomRoleNameModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ CustomRoleNameModel(QObject *parent = 0) : QAbstractListModel(parent) {}
+
+ QVariant data(const QModelIndex &index, int role) const
+ {
+ Q_UNUSED(index);
+ Q_UNUSED(role);
+ return QVariant();
+ }
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const
+ {
+ Q_UNUSED(parent);
+ return 0;
+ }
+
+ QHash<int, QByteArray> roleNames() const
+ {
+ QHash<int, QByteArray> rn = QAbstractListModel::roleNames();
+ rn[Qt::UserRole + 1] = "custom";
+ return rn;
+ }
+};
+
+void tst_QSortFilterProxyModel::chainedProxyModelRoleNames()
+{
+ QSortFilterProxyModel proxy1;
+ QSortFilterProxyModel proxy2;
+ CustomRoleNameModel customModel;
+
+ proxy2.setSourceModel(&proxy1);
+
+ // changing the sourceModel of proxy1 must also update roleNames of proxy2
+ proxy1.setSourceModel(&customModel);
+ QVERIFY(proxy2.roleNames().value(Qt::UserRole + 1) == "custom");
+}
QTEST_MAIN(tst_QSortFilterProxyModel)
#include "tst_qsortfilterproxymodel.moc"
diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp
index a692b79fe9..6811551769 100644
--- a/tests/auto/corelib/json/tst_qtjson.cpp
+++ b/tests/auto/corelib/json/tst_qtjson.cpp
@@ -1003,49 +1003,81 @@ void tst_QtJson::toVariantList()
void tst_QtJson::toJson()
{
- QJsonObject object;
- object.insert("\\Key\n", QString("Value"));
- object.insert("null", QJsonValue());
- QJsonArray array;
- array.append(true);
- array.append(999.);
- array.append(QLatin1String("string"));
- array.append(QJsonValue());
- array.append(QLatin1String("\\\a\n\r\b\tabcABC\""));
- object.insert("Array", array);
+ // Test QJsonDocument::Indented format
+ {
+ QJsonObject object;
+ object.insert("\\Key\n", QString("Value"));
+ object.insert("null", QJsonValue());
+ QJsonArray array;
+ array.append(true);
+ array.append(999.);
+ array.append(QLatin1String("string"));
+ array.append(QJsonValue());
+ array.append(QLatin1String("\\\a\n\r\b\tabcABC\""));
+ object.insert("Array", array);
+
+ QByteArray json = QJsonDocument(object).toJson();
+
+ QByteArray expected =
+ "{\n"
+ " \"Array\": [\n"
+ " true,\n"
+ " 999,\n"
+ " \"string\",\n"
+ " null,\n"
+ " \"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"\n"
+ " ],\n"
+ " \"\\\\Key\\n\": \"Value\",\n"
+ " \"null\": null\n"
+ "}\n";
+ QCOMPARE(json, expected);
- QByteArray json = QJsonDocument(object).toJson();
-
- QByteArray expected =
- "{\n"
- " \"Array\": [\n"
- " true,\n"
- " 999,\n"
- " \"string\",\n"
- " null,\n"
- " \"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"\n"
- " ],\n"
- " \"\\\\Key\\n\": \"Value\",\n"
- " \"null\": null\n"
- "}\n";
- QCOMPARE(json, expected);
+ QJsonDocument doc;
+ doc.setObject(object);
+ json = doc.toJson();
+ QCOMPARE(json, expected);
- QJsonDocument doc;
- doc.setObject(object);
- json = doc.toJson();
- QCOMPARE(json, expected);
+ doc.setArray(array);
+ json = doc.toJson();
+ expected =
+ "[\n"
+ " true,\n"
+ " 999,\n"
+ " \"string\",\n"
+ " null,\n"
+ " \"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"\n"
+ "]\n";
+ QCOMPARE(json, expected);
+ }
- doc.setArray(array);
- json = doc.toJson();
- expected =
- "[\n"
- " true,\n"
- " 999,\n"
- " \"string\",\n"
- " null,\n"
- " \"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"\n"
- "]\n";
- QCOMPARE(json, expected);
+ // Test QJsonDocument::Compact format
+ {
+ QJsonObject object;
+ object.insert("\\Key\n", QString("Value"));
+ object.insert("null", QJsonValue());
+ QJsonArray array;
+ array.append(true);
+ array.append(999.);
+ array.append(QLatin1String("string"));
+ array.append(QJsonValue());
+ array.append(QLatin1String("\\\a\n\r\b\tabcABC\""));
+ object.insert("Array", array);
+
+ QByteArray json = QJsonDocument(object).toJson(QJsonDocument::Compact);
+ QByteArray expected =
+ "{\"Array\": [true,999,\"string\",null,\"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"],\"\\\\Key\\n\": \"Value\",\"null\": null}";
+ QCOMPARE(json, expected);
+
+ QJsonDocument doc;
+ doc.setObject(object);
+ json = doc.toJson(QJsonDocument::Compact);
+ QCOMPARE(json, expected);
+
+ doc.setArray(array);
+ json = doc.toJson(QJsonDocument::Compact);
+ expected = "[true,999,\"string\",null,\"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"]";
+ QCOMPARE(json, expected);
+ }
}
void tst_QtJson::fromJson()
@@ -1135,6 +1167,30 @@ void tst_QtJson::fromJson()
QCOMPARE(object.value("6").type(), QJsonValue::Object);
QCOMPARE(object.value("6").toObject().size(), 0);
}
+ {
+ QByteArray compactJson = "{\"Array\": [true,999,\"string\",null,\"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"],\"\\\\Key\\n\": \"Value\",\"null\": null}";
+ QJsonDocument doc = QJsonDocument::fromJson(compactJson);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), true);
+ QJsonObject object = doc.object();
+ QCOMPARE(object.size(), 3);
+ QCOMPARE(object.value("\\Key\n").isString(), true);
+ QCOMPARE(object.value("\\Key\n").toString(), QString("Value"));
+ QCOMPARE(object.value("null").isNull(), true);
+ QCOMPARE(object.value("Array").isArray(), true);
+ QJsonArray array = object.value("Array").toArray();
+ QCOMPARE(array.size(), 5);
+ QCOMPARE(array.at(0).isBool(), true);
+ QCOMPARE(array.at(0).toBool(), true);
+ QCOMPARE(array.at(1).isDouble(), true);
+ QCOMPARE(array.at(1).toDouble(), 999.);
+ QCOMPARE(array.at(2).isString(), true);
+ QCOMPARE(array.at(2).toString(), QLatin1String("string"));
+ QCOMPARE(array.at(3).isNull(), true);
+ QCOMPARE(array.at(4).isString(), true);
+ QCOMPARE(array.at(4).toString(), QLatin1String("\\\a\n\r\b\tabcABC\""));
+ }
}
void tst_QtJson::fromJsonErrors()
diff --git a/tests/auto/corelib/kernel/kernel.pro b/tests/auto/corelib/kernel/kernel.pro
index 57d52117c7..a283f5343d 100644
--- a/tests/auto/corelib/kernel/kernel.pro
+++ b/tests/auto/corelib/kernel/kernel.pro
@@ -21,6 +21,11 @@ SUBDIRS=\
qvariant \
qwineventnotifier
+!qtHaveModule(network): SUBDIRS -= \
+ qeventloop \
+ qobject \
+ qsocketnotifier
+
!contains(QT_CONFIG, private_tests): SUBDIRS -= \
qsocketnotifier \
qsharedmemory
@@ -28,4 +33,4 @@ SUBDIRS=\
# This test is only applicable on Windows
!win32*:SUBDIRS -= qwineventnotifier
-qnx: SUBDIRS -= qsharedmemory qsystemsemaphore
+android|qnx: SUBDIRS -= qsharedmemory qsystemsemaphore
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
index 42bf9eeca3..10c00e2a67 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
@@ -769,6 +769,18 @@ void tst_QCoreApplication::testQuitLock()
app.exec();
}
+static void createQObjectOnDestruction()
+{
+ // Make sure that we can create a QObject after the last QObject has been
+ // destroyed (especially after QCoreApplication has).
+ //
+ // Before the fixes, this would cause a dangling pointer dereference. If
+ // the problem comes back, it's possible that the following causes no
+ // effect.
+ QObject obj;
+ obj.thread()->setProperty("testing", 1);
+}
+Q_DESTRUCTOR_FUNCTION(createQObjectOnDestruction)
QTEST_APPLESS_MAIN(tst_QCoreApplication)
#include "tst_qcoreapplication.moc"
diff --git a/tests/auto/corelib/kernel/qmath/tst_qmath.cpp b/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
index 0d977317ca..24934ac138 100644
--- a/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
+++ b/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2013 Laszlo Papp <lpapp@kde.org>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the test suite of the Qt Toolkit.
@@ -42,13 +43,17 @@
#include <QtTest/QtTest>
#include <qmath.h>
-static const qreal PI = 3.14159265358979323846264338327950288;
+static const double PI = 3.14159265358979323846264338327950288;
class tst_QMath : public QObject
{
Q_OBJECT
private slots:
void fastSinCos();
+ void degreesToRadians_data();
+ void degreesToRadians();
+ void radiansToDegrees_data();
+ void radiansToDegrees();
};
void tst_QMath::fastSinCos()
@@ -62,6 +67,76 @@ void tst_QMath::fastSinCos()
}
}
+void tst_QMath::degreesToRadians_data()
+{
+ QTest::addColumn<float>("degreesFloat");
+ QTest::addColumn<float>("radiansFloat");
+ QTest::addColumn<double>("degreesDouble");
+ QTest::addColumn<double>("radiansDouble");
+
+ QTest::newRow( "pi" ) << 180.0f << float(M_PI) << 180.0 << PI;
+ QTest::newRow( "doublepi" ) << 360.0f << float(2*M_PI) << 360.0 << 2*PI;
+ QTest::newRow( "halfpi" ) << 90.0f << float(M_PI_2) << 90.0 << PI/2;
+
+ QTest::newRow( "random" ) << 123.1234567f << 2.1489097058516724f << 123.123456789123456789 << 2.148909707407169856192285627;
+ QTest::newRow( "bigrandom" ) << 987654321.9876543f << 17237819.79023679f << 987654321987654321.987654321987654321 << 17237819790236794.0;
+
+ QTest::newRow( "zero" ) << 0.0f << 0.0f << 0.0 << 0.0;
+
+ QTest::newRow( "minuspi" ) << -180.0f << float(-M_PI) << 180.0 << PI;
+ QTest::newRow( "minusdoublepi" ) << -360.0f << float(-2*M_PI) << -360.0 << -2*PI;
+ QTest::newRow( "minushalfpi" ) << -90.0f << float(-M_PI_2) << -90.0 << -PI/2;
+
+ QTest::newRow( "minusrandom" ) << -123.1234567f << -2.1489097058516724f << -123.123456789123456789 << -2.148909707407169856192285627;
+ QTest::newRow( "minusbigrandom" ) << -987654321.9876543f << -17237819.79023679f << -987654321987654321.987654321987654321 << -17237819790236794.0;
+}
+
+void tst_QMath::degreesToRadians()
+{
+ QFETCH(float, degreesFloat);
+ QFETCH(float, radiansFloat);
+ QFETCH(double, degreesDouble);
+ QFETCH(double, radiansDouble);
+
+ QCOMPARE(qDegreesToRadians(degreesFloat), radiansFloat);
+ QCOMPARE(qDegreesToRadians(degreesDouble), radiansDouble);
+}
+
+void tst_QMath::radiansToDegrees_data()
+{
+ QTest::addColumn<float>("radiansFloat");
+ QTest::addColumn<float>("degreesFloat");
+ QTest::addColumn<double>("radiansDouble");
+ QTest::addColumn<double>("degreesDouble");
+
+ QTest::newRow( "pi" ) << float(M_PI) << 180.0f << PI << 180.0;
+ QTest::newRow( "doublepi" ) << float(2*M_PI) << 360.0f << 2*PI << 360.0;
+ QTest::newRow( "halfpi" ) << float(M_PI_2) << 90.0f<< PI/2 << 90.0;
+
+ QTest::newRow( "random" ) << 123.1234567f << 7054.454427971739f << 123.123456789123456789 << 7054.4544330781363896676339209079742431640625;
+ QTest::newRow( "bigrandom" ) << 987654321.9876543f << 56588424267.74745f << 987654321987654321.987654321987654321 << 56588424267747450880.0;
+
+ QTest::newRow( "zero" ) << 0.0f << 0.0f << 0.0 << 0.0;
+
+ QTest::newRow( "minuspi" ) << float(-M_PI) << -180.0f << -PI << -180.0;
+ QTest::newRow( "minusdoublepi" ) << float(-2*M_PI) << -360.0f << -2*PI << -360.0;
+ QTest::newRow( "minushalfpi" ) << float(-M_PI_2) << -90.0f << -PI/2 << -90.0;
+
+ QTest::newRow( "minusrandom" ) << -123.1234567f << -7054.454427971739f << -123.123456789123456789 << -7054.4544330781363896676339209079742431640625;
+ QTest::newRow( "minusbigrandom" ) << -987654321.9876543f << -56588424267.74745f << -987654321987654321.987654321987654321 << -56588424267747450880.0;
+}
+
+void tst_QMath::radiansToDegrees()
+{
+ QFETCH(float, radiansFloat);
+ QFETCH(float, degreesFloat);
+ QFETCH(double, radiansDouble);
+ QFETCH(double, degreesDouble);
+
+ QCOMPARE(qRadiansToDegrees(radiansFloat), degreesFloat);
+ QCOMPARE(qRadiansToDegrees(radiansDouble), degreesDouble);
+}
+
QTEST_APPLESS_MAIN(tst_QMath)
#include "tst_qmath.moc"
diff --git a/tests/auto/corelib/kernel/qmetamethod/qmetamethod.pro b/tests/auto/corelib/kernel/qmetamethod/qmetamethod.pro
index e253702d56..8340bc06e3 100644
--- a/tests/auto/corelib/kernel/qmetamethod/qmetamethod.pro
+++ b/tests/auto/corelib/kernel/qmetamethod/qmetamethod.pro
@@ -3,5 +3,5 @@ CONFIG += parallel_test
TARGET = tst_qmetamethod
QT = core testlib
SOURCES = tst_qmetamethod.cpp
-macx:CONFIG -= app_bundle
+mac:CONFIG -= app_bundle
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/corelib/kernel/qmetaobjectbuilder/qmetaobjectbuilder.pro b/tests/auto/corelib/kernel/qmetaobjectbuilder/qmetaobjectbuilder.pro
index 008b596b72..9e2d3519e6 100644
--- a/tests/auto/corelib/kernel/qmetaobjectbuilder/qmetaobjectbuilder.pro
+++ b/tests/auto/corelib/kernel/qmetaobjectbuilder/qmetaobjectbuilder.pro
@@ -2,5 +2,5 @@ CONFIG += testcase parallel_test
TARGET = tst_qmetaobjectbuilder
QT = core-private gui-private testlib
SOURCES = tst_qmetaobjectbuilder.cpp
-macx:CONFIG -= app_bundle
+mac:CONFIG -= app_bundle
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index 7f7486ef4b..77ea39da53 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -110,6 +110,7 @@ private slots:
void saveAndLoadCustom();
void metaObject();
void constexprMetaTypeIds();
+ void constRefs();
};
struct Foo { int i; };
@@ -169,7 +170,7 @@ protected:
const QByteArray name = QString("Bar%1_%2").arg(i).arg((size_t)QThread::currentThreadId()).toLatin1();
const char *nm = name.constData();
int tp = qRegisterMetaType<Bar>(nm);
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) && !defined(Q_OS_ANDROID)
pthread_yield();
#endif
QMetaType info(tp);
@@ -1762,6 +1763,17 @@ void tst_QMetaType::constexprMetaTypeIds()
#endif
}
+void tst_QMetaType::constRefs()
+{
+ QCOMPARE(::qMetaTypeId<const int &>(), ::qMetaTypeId<int>());
+ QCOMPARE(::qMetaTypeId<const QString &>(), ::qMetaTypeId<QString>());
+ QCOMPARE(::qMetaTypeId<const CustomMovable &>(), ::qMetaTypeId<CustomMovable>());
+ QCOMPARE(::qMetaTypeId<const QList<CustomMovable> &>(), ::qMetaTypeId<QList<CustomMovable> >());
+#if defined(Q_COMPILER_CONSTEXPR)
+ Q_STATIC_ASSERT(::qMetaTypeId<const int &>() == ::qMetaTypeId<int>());
+#endif
+}
+
// Compile-time test, it should be possible to register function pointer types
class Undefined;
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index 865264c43a..06fc89f657 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2013 Olivier Goffart <ogoffart@woboq.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the test suite of the Qt Toolkit.
@@ -68,7 +69,7 @@ class tst_QObject : public QObject
private slots:
void initTestCase();
void disconnect();
- void connectByName();
+ void connectSlotsByName();
void connectSignalsToSignalsWithDefaultArguments();
void receivers();
void normalize();
@@ -140,10 +141,22 @@ private slots:
void returnValue2_data();
void returnValue2();
void connectVirtualSlots();
+ void connectPrivateSlots();
void connectFunctorArgDifference();
+ void connectFunctorOverloads();
void disconnectDoesNotLeakFunctor();
};
+struct QObjectCreatedOnShutdown
+{
+ QObjectCreatedOnShutdown() {}
+ ~QObjectCreatedOnShutdown()
+ {
+ QObject();
+ }
+};
+static QObjectCreatedOnShutdown s_qobjectCreatedOnShutdown;
+
class SenderObject : public QObject
{
Q_OBJECT
@@ -368,6 +381,7 @@ public:
void emitSignalWithParams(int i) { emit signalWithParams(i); }
void emitSignalWithParams(int i, QString string) { emit signalWithParams(i, string); }
void emitSignalManyParams(int i1, int i2, int i3, QString string, bool onoff) { emit signalManyParams(i1, i2, i3, string, onoff); }
+ void emitSignalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool dummy) { emit signalManyParams(i1, i2, i3, string, onoff, dummy); }
void emitSignalManyParams2(int i1, int i2, int i3, QString string, bool onoff) { emit signalManyParams2(i1, i2, i3, string, onoff); }
void emitSignalLoopBack() { emit signalLoopBack(); }
@@ -386,158 +400,89 @@ class AutoConnectReceiver : public QObject
Q_OBJECT
public:
+ QList<int> called_slots;
+
AutoConnectReceiver()
{
- reset();
-
connect(this, SIGNAL(on_Sender_signalLoopBack()), this, SLOT(slotLoopBack()));
}
- void reset() {
- called_slot10 = 0;
- called_slot9 = 0;
- called_slot8 = 0;
- called_slot7 = 0;
- called_slot6 = 0;
- called_slot5 = 0;
- called_slot4 = 0;
- called_slot3 = 0;
- called_slot2 = 0;
- called_slot1 = 0;
- }
-
- int called_slot1;
- int called_slot2;
- int called_slot3;
- int called_slot4;
- int called_slot5;
- int called_slot6;
- int called_slot7;
- int called_slot8;
- int called_slot9;
- int called_slot10;
-
- bool called(int slot) {
- switch (slot) {
- case 1: return called_slot1;
- case 2: return called_slot2;
- case 3: return called_slot3;
- case 4: return called_slot4;
- case 5: return called_slot5;
- case 6: return called_slot6;
- case 7: return called_slot7;
- case 8: return called_slot8;
- case 9: return called_slot9;
- case 10: return called_slot10;
- default: return false;
- }
- }
+ void emitSignalNoParams() { emit signalNoParams(); }
+ void emit_signal_with_underscore() { emit signal_with_underscore(); }
public slots:
- void on_Sender_signalNoParams() { ++called_slot1; }
- void on_Sender_signalWithParams(int i = 0) { ++called_slot2; Q_UNUSED(i); }
- void on_Sender_signalWithParams(int i, QString string) { ++called_slot3; Q_UNUSED(i);Q_UNUSED(string); }
- void on_Sender_signalManyParams() { ++called_slot4; }
- void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff) { ++called_slot5; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
+ void on_Sender_signalNoParams() { called_slots << 1; }
+ void on_Sender_signalWithParams(int i = 0) { called_slots << 2; Q_UNUSED(i); }
+ void on_Sender_signalWithParams(int i, QString string) { called_slots << 3; Q_UNUSED(i);Q_UNUSED(string); }
+ void on_Sender_signalManyParams() { called_slots << 4; }
+ void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff)
+ { called_slots << 5; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
void on_Sender_signalManyParams(int i1, int i2, int i3, QString string, bool onoff, bool dummy)
- { ++called_slot6; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); Q_UNUSED(dummy);}
+ { called_slots << 6; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); Q_UNUSED(dummy);}
void on_Sender_signalManyParams2(int i1, int i2, int i3, QString string, bool onoff)
- { ++called_slot7; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
- void slotLoopBack() { ++called_slot8; }
+ { called_slots << 7; Q_UNUSED(i1);Q_UNUSED(i2);Q_UNUSED(i3);Q_UNUSED(string);Q_UNUSED(onoff); }
+ void slotLoopBack() { called_slots << 8; }
+ void on_Receiver_signalNoParams() { called_slots << 9; }
+ void on_Receiver_signal_with_underscore() { called_slots << 10; }
protected slots:
- void o() { ++called_slot9; }
- void on() { ++called_slot10; }
+ void o() { called_slots << -1; }
+ void on() { called_slots << -1; }
+ void on_() { called_slots << -1; }
+ void on_something() { called_slots << -1; }
+ void on_child_signal() { called_slots << -1; }
signals:
void on_Sender_signalLoopBack();
+ void signalNoParams();
+ void signal_with_underscore();
};
-void tst_QObject::connectByName()
+void tst_QObject::connectSlotsByName()
{
AutoConnectReceiver receiver;
+ receiver.setObjectName("Receiver");
AutoConnectSender sender(&receiver);
sender.setObjectName("Sender");
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::connectSlotsByName: No matching signal for on_child_signal()");
+ QTest::ignoreMessage(QtWarningMsg, "QMetaObject::connectSlotsByName: Connecting slot on_Sender_signalManyParams() with the first of the following compatible signals: (\"signalManyParams(int,int,int,QString,bool)\", \"signalManyParams(int,int,int,QString,bool,bool)\") ");
QMetaObject::connectSlotsByName(&receiver);
+ receiver.called_slots.clear();
sender.emitSignalNoParams();
- QCOMPARE(receiver.called(1), true);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
+ QCOMPARE(receiver.called_slots, QList<int>() << 1);
+ receiver.called_slots.clear();
sender.emitSignalWithParams(0);
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), true);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
+ QCOMPARE(receiver.called_slots, QList<int>() << 2);
+ receiver.called_slots.clear();
sender.emitSignalWithParams(0, "string");
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), true);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
+ QCOMPARE(receiver.called_slots, QList<int>() << 3);
+ receiver.called_slots.clear();
sender.emitSignalManyParams(1, 2, 3, "string", true);
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), true);
- QCOMPARE(receiver.called(5), true);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
+ sender.emitSignalManyParams(1, 2, 3, "string", true, false);
+ // the slot '4' (signalManyParams()) will get connected
+ // to either of the two signalManyParams(...) overloads
+ QCOMPARE(receiver.called_slots, QList<int>() << 4 << 5 << 6);
+ receiver.called_slots.clear();
sender.emitSignalManyParams2(1, 2, 3, "string", true);
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), true);
- QCOMPARE(receiver.called(8), false);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
+ QCOMPARE(receiver.called_slots, QList<int>() << 7);
+ receiver.called_slots.clear();
sender.emitSignalLoopBack();
- QCOMPARE(receiver.called(1), false);
- QCOMPARE(receiver.called(2), false);
- QCOMPARE(receiver.called(3), false);
- QCOMPARE(receiver.called(4), false);
- QCOMPARE(receiver.called(5), false);
- QCOMPARE(receiver.called(6), false);
- QCOMPARE(receiver.called(7), false);
- QCOMPARE(receiver.called(8), true);
- QCOMPARE(receiver.called(9), false);
- QCOMPARE(receiver.called(10), false);
- receiver.reset();
+ QCOMPARE(receiver.called_slots, QList<int>() << 8);
+
+ receiver.called_slots.clear();
+ receiver.emitSignalNoParams();
+ QCOMPARE(receiver.called_slots, QList<int>() << 9);
+
+ receiver.called_slots.clear();
+ receiver.emit_signal_with_underscore();
+ QCOMPARE(receiver.called_slots, QList<int>() << 10);
}
void tst_QObject::qobject_castTemplate()
@@ -1436,9 +1381,11 @@ public:
public slots:
void slot1(CustomType ct);
+ void slot2(const QList<CustomType> &ct);
signals:
void signal1(CustomType ct);
+ void signal2(const QList<CustomType> &ct);
public:
CustomType received;
@@ -1447,6 +1394,8 @@ public:
void QCustomTypeChecker::slot1(CustomType ct)
{ received = ct; }
+void QCustomTypeChecker::slot2(const QList< CustomType >& ct)
+{ received = ct[0]; }
void tst_QObject::customTypes()
{
@@ -4657,6 +4606,21 @@ void tst_QObject::customTypesPointer()
QCOMPARE(qRegisterMetaType<CustomType>("CustomType"), idx);
QCOMPARE(QMetaType::type("CustomType"), idx);
QVERIFY(QMetaType::isRegistered(idx));
+
+ // Test auto registered type (QList<CustomType>)
+ QList<CustomType> list;
+ QCOMPARE(instanceCount, 4);
+ list.append(t1);
+ QCOMPARE(instanceCount, 5);
+ QVERIFY(connect(&checker, &QCustomTypeChecker::signal2,
+ &checker, &QCustomTypeChecker::slot2, Qt::QueuedConnection));
+ emit checker.signal2(list);
+ QCOMPARE(instanceCount, 5); //because the list is implicitly shared.
+ list.clear();
+ QCOMPARE(instanceCount, 5);
+ QCoreApplication::processEvents();
+ QCOMPARE(checker.received.value(), t1.value());
+ QCOMPARE(instanceCount, 4);
}
QCOMPARE(instanceCount, 3);
}
@@ -5535,6 +5499,72 @@ void tst_QObject::connectVirtualSlots()
*/
}
+#ifndef QT_BUILD_INTERNAL
+void tst_QObject::connectPrivateSlots()
+{QSKIP("Needs QT_BUILD_INTERNAL");}
+#else
+class ConnectToPrivateSlotPrivate;
+
+class ConnectToPrivateSlot :public QObject {
+ Q_OBJECT
+public:
+ ConnectToPrivateSlot();
+ void test(SenderObject *obj1) ;
+ Q_DECLARE_PRIVATE(ConnectToPrivateSlot)
+};
+
+class ConnectToPrivateSlotPrivate : public QObjectPrivate {
+public:
+ Q_DECLARE_PUBLIC(ConnectToPrivateSlot)
+ int receivedCount;
+ QVariant receivedValue;
+
+ void thisIsAPrivateSlot() {
+ receivedCount++;
+ };
+
+ void thisIsAPrivateSlotWithArg(const QVariant &v) {
+ receivedCount++;
+ receivedValue = v;
+ };
+};
+
+ConnectToPrivateSlot::ConnectToPrivateSlot(): QObject(*new ConnectToPrivateSlotPrivate) {}
+
+void ConnectToPrivateSlot::test(SenderObject* obj1) {
+ Q_D(ConnectToPrivateSlot);
+ d->receivedCount = 0;
+ QVERIFY(QObjectPrivate::connect(obj1, &SenderObject::signal1, d, &ConnectToPrivateSlotPrivate::thisIsAPrivateSlot));
+ QVERIFY(QObjectPrivate::connect(obj1, &SenderObject::signal7, d, &ConnectToPrivateSlotPrivate::thisIsAPrivateSlotWithArg));
+ QCOMPARE(d->receivedCount, 0);
+ obj1->signal1();
+ QCOMPARE(d->receivedCount, 1);
+ QCOMPARE(d->receivedValue, QVariant());
+ obj1->signal7(666, QLatin1Literal("_"));
+ QCOMPARE(d->receivedCount, 2);
+ QCOMPARE(d->receivedValue, QVariant(666));
+ QVERIFY(QObjectPrivate::connect(obj1, &SenderObject::signal2, d, &ConnectToPrivateSlotPrivate::thisIsAPrivateSlot, Qt::UniqueConnection));
+ QVERIFY(!QObjectPrivate::connect(obj1, &SenderObject::signal2, d, &ConnectToPrivateSlotPrivate::thisIsAPrivateSlot, Qt::UniqueConnection));
+ obj1->signal2();
+ QCOMPARE(d->receivedCount, 3);
+ QVERIFY(QObjectPrivate::disconnect(obj1, &SenderObject::signal2, d, &ConnectToPrivateSlotPrivate::thisIsAPrivateSlot));
+ obj1->signal2();
+ QCOMPARE(d->receivedCount, 3);
+ QVERIFY(!QObjectPrivate::disconnect(obj1, &SenderObject::signal2, d, &ConnectToPrivateSlotPrivate::thisIsAPrivateSlot));
+}
+
+void tst_QObject::connectPrivateSlots()
+{
+ SenderObject sender;
+ {
+ ConnectToPrivateSlot o;
+ o.test(&sender);
+ }
+ sender.signal7(777, QLatin1String("check that deleting the object properly disconnected"));
+ sender.signal1();
+}
+#endif
+
struct SlotFunctor
{
void operator()() {}
@@ -5570,6 +5600,131 @@ void tst_QObject::connectFunctorArgDifference()
QVERIFY(true);
}
+struct ComplexFunctor {
+ ComplexFunctor(int &overload, QList<QVariant> &result) : overload(overload), result(result) {}
+ void operator()(int a, int b) {
+ overload = 1;
+ result << a << b;
+ }
+ void operator()(double a, double b) {
+ overload = 2;
+ result << a << b;
+ }
+ void operator()(const QString &s) {
+ overload = 3;
+ result << s;
+ }
+ void operator()(const QString &) const {
+ Q_ASSERT(!"Should not be called because the non-const one should");
+ overload = -1;
+ }
+ template<typename T1, typename T2, typename T3, typename T4>
+ void operator()(const T1 &t1, const T2 &t2, const T3 &t3, const T4 &t4) {
+ overload = 4;
+ result << QVariant::fromValue(t1) << QVariant::fromValue(t2) << QVariant::fromValue(t3) << QVariant::fromValue(t4);
+ }
+ int &overload;
+ QList<QVariant> &result;
+protected:
+ void operator()() const {
+ Q_ASSERT(!"Should not be called because it is protected");
+ overload = -1;
+ }
+};
+
+struct ComplexFunctorDeriv : ComplexFunctor {
+ ComplexFunctorDeriv(int &overload, QList<QVariant> &result) : ComplexFunctor(overload, result) {}
+
+ void operator()() const {
+ overload = 10;
+ }
+ void operator()(int a, int b) {
+ overload = 11;
+ result << a << b;
+ }
+ using ComplexFunctor::operator();
+private:
+ void operator()(int) {
+ Q_ASSERT(!"Should not be called because it is private");
+ overload = -1;
+ }
+};
+
+class FunctorArgDifferenceObject : public QObject
+{
+ Q_OBJECT
+signals:
+ void signal_ii(int,int);
+ void signal_iiS(int,int, const QString &);
+ void signal_dd(double,double);
+ void signal_ddS(double,double, const QString &);
+ void signal_S(const QString &);
+ void signal_SSSS(const QString &, const QString &, const QString &, const QString &);
+ void signal_iiSS(int, int, const QString &, const QString &);
+ void signal_VV(const QVariant &, const QVariant &);
+};
+
+template<typename Functor, typename Signal>
+void connectFunctorOverload_impl(Signal signal, int expOverload, QList<QVariant> expResult)
+{
+ FunctorArgDifferenceObject obj;
+ int overload;
+ QList<QVariant> result;
+ QVERIFY(QObject::connect(&obj, signal, Functor(overload, result)));
+
+ obj.signal_ii(1,2);
+ obj.signal_iiS(3,4,"5");
+ obj.signal_dd(6.6,7.7);
+ obj.signal_ddS(8.8,9.9,"10");
+ obj.signal_S("11");
+ obj.signal_SSSS("12", "13", "14", "15");
+ obj.signal_iiSS(16, 17, "18", "19");
+ obj.signal_VV(20,21);
+
+ QCOMPARE(overload, expOverload);
+ QCOMPARE(result, expResult);
+}
+
+void tst_QObject::connectFunctorOverloads()
+{
+#if defined (Q_COMPILER_DECLTYPE) && defined (Q_COMPILER_VARIADIC_TEMPLATES)
+ connectFunctorOverload_impl<ComplexFunctor>(&FunctorArgDifferenceObject::signal_ii, 1,
+ (QList<QVariant>() << 1 << 2));
+ connectFunctorOverload_impl<ComplexFunctor>(&FunctorArgDifferenceObject::signal_iiS, 1,
+ (QList<QVariant>() << 3 << 4));
+ connectFunctorOverload_impl<ComplexFunctor>(&FunctorArgDifferenceObject::signal_dd, 2,
+ (QList<QVariant>() << 6.6 << 7.7));
+ connectFunctorOverload_impl<ComplexFunctor>(&FunctorArgDifferenceObject::signal_ddS, 2,
+ (QList<QVariant>() << 8.8 << 9.9));
+ connectFunctorOverload_impl<ComplexFunctor>(&FunctorArgDifferenceObject::signal_S, 3,
+ (QList<QVariant>() << QString("11")));
+ connectFunctorOverload_impl<ComplexFunctor>(&FunctorArgDifferenceObject::signal_SSSS, 4,
+ (QList<QVariant>() << QString("12") << QString("13") << QString("14") << QString("15")));
+ connectFunctorOverload_impl<ComplexFunctor>(&FunctorArgDifferenceObject::signal_iiSS, 4,
+ (QList<QVariant>() << 16 << 17 << QString("18") << QString("19")));
+ connectFunctorOverload_impl<ComplexFunctorDeriv>(&FunctorArgDifferenceObject::signal_ii, 11,
+ (QList<QVariant>() << 1 << 2));
+ connectFunctorOverload_impl<ComplexFunctorDeriv>(&FunctorArgDifferenceObject::signal_iiS, 11,
+ (QList<QVariant>() << 3 << 4));
+ connectFunctorOverload_impl<ComplexFunctorDeriv>(&FunctorArgDifferenceObject::signal_dd, 2,
+ (QList<QVariant>() << 6.6 << 7.7));
+ connectFunctorOverload_impl<ComplexFunctorDeriv>(&FunctorArgDifferenceObject::signal_ddS, 2,
+ (QList<QVariant>() << 8.8 << 9.9));
+ connectFunctorOverload_impl<ComplexFunctorDeriv>(&FunctorArgDifferenceObject::signal_S, 3,
+ (QList<QVariant>() << QString("11")));
+ connectFunctorOverload_impl<ComplexFunctorDeriv>(&FunctorArgDifferenceObject::signal_SSSS, 4,
+ (QList<QVariant>() << QString("12") << QString("13") << QString("14") << QString("15")));
+ connectFunctorOverload_impl<ComplexFunctorDeriv>(&FunctorArgDifferenceObject::signal_iiSS, 4,
+ (QList<QVariant>() << 16 << 17 << QString("18") << QString("19")));
+ connectFunctorOverload_impl<ComplexFunctorDeriv>(&FunctorArgDifferenceObject::signal_VV, 10,
+ (QList<QVariant>()));
+
+
+#else
+ QSKIP("Does not compile without C++11 variadic template");
+#endif
+}
+
static int countedStructObjectsCount = 0;
struct CountedStruct
{
diff --git a/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp b/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
index 7c6549364f..609b4b7dce 100644
--- a/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
+++ b/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
@@ -65,6 +65,7 @@ private slots:
void threadSafety();
void qvariantCast();
+ void constPointer();
};
void tst_QPointer::constructors()
@@ -384,6 +385,12 @@ void tst_QPointer::qvariantCast()
// QPointer<int> sop = qPointerFromVariant<int>(v);
}
+void tst_QPointer::constPointer()
+{
+ // Compile-time test that QPointer<const T> works.
+ QPointer<const QFile> fp = new QFile;
+ delete fp.data();
+}
QTEST_MAIN(tst_QPointer)
diff --git a/tests/auto/corelib/kernel/qsharedmemory/test/tst_qsharedmemory.cpp b/tests/auto/corelib/kernel/qsharedmemory/test/tst_qsharedmemory.cpp
index 3583c1cab3..ce5e83288f 100644
--- a/tests/auto/corelib/kernel/qsharedmemory/test/tst_qsharedmemory.cpp
+++ b/tests/auto/corelib/kernel/qsharedmemory/test/tst_qsharedmemory.cpp
@@ -748,6 +748,8 @@ void tst_QSharedMemory::simpleProcessProducerConsumer()
{
QFETCH(int, processes);
+ QSKIP("This test is unstable: QTBUG-25655");
+
rememberKey("market");
QProcess producer;
diff --git a/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c b/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
index 324dce5b0c..a9abe471b1 100644
--- a/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
+++ b/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
@@ -53,6 +53,12 @@
# define BORLAND_STDCALL
#endif
+static int pluginVariable = 0xc0ffee;
+LIB_EXPORT int *pointerAddress()
+{
+ return &pluginVariable;
+}
+
LIB_EXPORT int BORLAND_STDCALL version()
{
return 1;
diff --git a/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro b/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro
index 5aa7b4805b..0cba19887e 100644
--- a/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro
+++ b/tests/auto/corelib/plugin/qpluginloader/qpluginloader.pro
@@ -4,7 +4,7 @@ CONFIG += ordered
SUBDIRS = lib \
theplugin \
tst
-!win32: !macx-*: SUBDIRS += almostplugin
+!win32: !mac: SUBDIRS += almostplugin
TARGET = tst_qpluginloader
# no special install rule for subdir
diff --git a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
index 6abb9b6c20..b26b24f454 100644
--- a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
@@ -46,3 +46,9 @@ QString ThePlugin::pluginName() const
{
return QLatin1String("Plugin ok");
}
+
+static int pluginVariable = 0xc0ffee;
+extern "C" Q_DECL_EXPORT int *pointerAddress()
+{
+ return &pluginVariable;
+}
diff --git a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
index f0be8cf6f1..cef4f53101 100644
--- a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
+++ b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
@@ -99,13 +99,19 @@
static QString sys_qualifiedLibraryName(const QString &fileName)
{
- return QFINDTESTDATA(QString("bin/%1%2%3").arg(PREFIX).arg(fileName).arg(SUFFIX));
+ QString libname = QFINDTESTDATA(QString("bin/%1%2%3").arg(PREFIX).arg(fileName).arg(SUFFIX));
+ QFileInfo fi(libname);
+ if (fi.exists())
+ return fi.canonicalFilePath();
+ return libname;
}
QT_FORWARD_DECLARE_CLASS(QPluginLoader)
class tst_QPluginLoader : public QObject
{
Q_OBJECT
+public slots:
+ void cleanup();
private slots:
void errorString();
void loadHints();
@@ -117,8 +123,25 @@ private slots:
#endif
void relativePath();
void reloadPlugin();
+ void preloadedPlugin_data();
+ void preloadedPlugin();
};
+void tst_QPluginLoader::cleanup()
+{
+ // check if the library/plugin was leaked
+ // we can't use QPluginLoader::isLoaded here because on some platforms the plugin is always loaded by QPluginLoader.
+ // Also, if this test fails once, it will keep on failing because we can't force the unload,
+ // so we report it only once.
+ static bool failedAlready = false;
+ if (!failedAlready) {
+ QLibrary lib(sys_qualifiedLibraryName("theplugin"));
+ failedAlready = true;
+ QVERIFY2(!lib.isLoaded(), "Plugin was leaked - will not check again");
+ failedAlready = false;
+ }
+}
+
void tst_QPluginLoader::errorString()
{
#if defined(Q_OS_WINCE)
@@ -334,6 +357,50 @@ void tst_QPluginLoader::reloadPlugin()
PluginInterface *instance2 = qobject_cast<PluginInterface*>(loader.instance());
QVERIFY(instance2);
QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));
+
+ QVERIFY(loader.unload());
+}
+
+void tst_QPluginLoader::preloadedPlugin_data()
+{
+ QTest::addColumn<bool>("doLoad");
+ QTest::addColumn<QString>("libname");
+ QTest::newRow("create-plugin") << false << sys_qualifiedLibraryName("theplugin");
+ QTest::newRow("load-plugin") << true << sys_qualifiedLibraryName("theplugin");
+ QTest::newRow("create-non-plugin") << false << sys_qualifiedLibraryName("tst_qpluginloaderlib");
+ QTest::newRow("load-non-plugin") << true << sys_qualifiedLibraryName("tst_qpluginloaderlib");
+}
+
+void tst_QPluginLoader::preloadedPlugin()
+{
+ // check that using QPluginLoader does not interfere with QLibrary
+ QFETCH(QString, libname);
+ QLibrary lib(libname);
+ QVERIFY(lib.load());
+
+ typedef int *(*pf_t)();
+ pf_t pf = (pf_t)lib.resolve("pointerAddress");
+ QVERIFY(pf);
+
+ int *pluginVariable = pf();
+ QVERIFY(pluginVariable);
+ QCOMPARE(*pluginVariable, 0xc0ffee);
+
+ {
+ // load the plugin
+ QPluginLoader loader(libname);
+ QFETCH(bool, doLoad);
+ if (doLoad && loader.load()) {
+ // unload() returns false because QLibrary has it loaded
+ QVERIFY(!loader.unload());
+ }
+ }
+
+ QVERIFY(lib.isLoaded());
+
+ // if the library was unloaded behind our backs, the following will crash:
+ QCOMPARE(*pluginVariable, 0xc0ffee);
+ QVERIFY(lib.unload());
}
QTEST_MAIN(tst_QPluginLoader)
diff --git a/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
index 651fa3b1db..21e067bc73 100644
--- a/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
+++ b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
@@ -47,7 +47,7 @@ int main(int argc, char **argv)
{
Q_UNUSED(argc)
Q_UNUSED(argv)
-
+
// First, break QUuid.
qrand();
diff --git a/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp b/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
index 9d7bbd4f5c..ae32731cbc 100644
--- a/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
+++ b/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
@@ -77,7 +77,7 @@ public:
public slots:
void slot() { called = true; }
-
+
};
void tst_QState::assignProperty()
@@ -89,7 +89,7 @@ void tst_QState::assignProperty()
QState *s1 = new QState(&machine);
s1->assignProperty(object, "fooBar", 20);
-
+
machine.setInitialState(s1);
machine.start();
QCoreApplication::processEvents();
@@ -107,7 +107,7 @@ void tst_QState::assignPropertyTwice()
QState *s1 = new QState(&machine);
s1->assignProperty(object, "fooBar", 20);
s1->assignProperty(object, "fooBar", 30);
-
+
machine.setInitialState(s1);
machine.start();
QCoreApplication::processEvents();
@@ -118,7 +118,7 @@ void tst_QState::assignPropertyTwice()
class EventTestTransition: public QAbstractTransition
{
public:
- EventTestTransition(QEvent::Type type, QState *targetState)
+ EventTestTransition(QEvent::Type type, QState *targetState)
: QAbstractTransition(), m_type(type)
{
setTargetState(targetState);
@@ -134,18 +134,18 @@ protected:
private:
QEvent::Type m_type;
-
+
};
-void tst_QState::historyInitialState()
+void tst_QState::historyInitialState()
{
QStateMachine machine;
QState *s1 = new QState(&machine);
-
+
QState *s2 = new QState(&machine);
QHistoryState *h1 = new QHistoryState(s2);
-
+
s2->setInitialState(h1);
QState *s3 = new QState(s2);
diff --git a/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp b/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp
index c9a41b29f8..c86befdf1b 100644
--- a/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp
+++ b/tests/auto/corelib/thread/qfuture/tst_qfuture.cpp
@@ -243,13 +243,13 @@ void tst_QFuture::resultStore()
store.addResult(2, &int2); // add result at index 2
QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
- store.addResult(1, &int1);
+ store.addResult(1, &int1);
QCOMPARE(store.contains(1), true);
QCOMPARE(store.contains(2), true); // 2 should be visible now.
- store.addResult(4, &int0);
- store.addResult(5, &int0);
- store.addResult(7, &int0);
+ store.addResult(4, &int0);
+ store.addResult(5, &int0);
+ store.addResult(7, &int0);
QCOMPARE(store.contains(4), false);
QCOMPARE(store.contains(5), false);
QCOMPARE(store.contains(7), false);
@@ -273,9 +273,9 @@ void tst_QFuture::resultStore()
store.addResult(0, &int0);
QCOMPARE(store.contains(0), true);
-
+
store.addResult(2, &int0);
- QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(2), false);
store.addCanceledResult(1); // report no result at 1
@@ -289,7 +289,7 @@ void tst_QFuture::resultStore()
store.addResult(6, &int0);
store.addResult(7, &int0);
QCOMPARE(store.contains(3), false);
-
+
store.addCanceledResult(4);
store.addCanceledResult(5);
@@ -311,10 +311,10 @@ void tst_QFuture::resultStore()
store.addResult(0, &int0);
QCOMPARE(store.count(), 1); // result 0 becomes available
QCOMPARE(store.contains(0), true);
-
+
store.addResult(2, &int0);
QCOMPARE(store.count(), 1);
- QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(2), false);
store.addCanceledResult(1);
QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
@@ -332,7 +332,7 @@ void tst_QFuture::resultStore()
store.addResult(7, &int0);
QCOMPARE(store.count(), 3);
QCOMPARE(store.contains(3), false);
-
+
store.addCanceledResult(4);
store.addCanceledResult(5);
QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
@@ -347,13 +347,13 @@ void tst_QFuture::resultStore()
QCOMPARE(store.contains(6), false);
QCOMPARE(store.contains(7), false);
}
-
+
{
// test resultCount in non-filtered mode. It should always be possible
// to iterate through the results 0 to resultCount.
QtPrivate::ResultStore<int> store;
store.addResult(0, &int0);
-
+
QCOMPARE(store.count(), 1);
store.addResult(2, &int0);
@@ -440,7 +440,7 @@ void tst_QFuture::resultStore()
store.addCanceledResults(0, 3);
QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
- store.addResult(5, &int0);
+ store.addResult(5, &int0);
QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
}
@@ -1112,9 +1112,9 @@ void tst_QFuture::iterators()
for (int i = 0; i < resultCount; ++i) {
e.reportResult(i);
}
-
+
e.reportFinished();
-
+
{
QFutureIterator<int> it(f);
QFutureIterator<int> it2(it);
@@ -1122,7 +1122,7 @@ void tst_QFuture::iterators()
{
QFutureIterator<int> it(f);
-
+
for (int i = 0; i < resultCount - 1; ++i) {
QVERIFY(it.hasNext());
QCOMPARE(it.peekNext(), i);
diff --git a/tests/auto/corelib/thread/qfuturewatcher/tst_qfuturewatcher.cpp b/tests/auto/corelib/thread/qfuturewatcher/tst_qfuturewatcher.cpp
index 467dd4b348..b2b0eace34 100644
--- a/tests/auto/corelib/thread/qfuturewatcher/tst_qfuturewatcher.cpp
+++ b/tests/auto/corelib/thread/qfuturewatcher/tst_qfuturewatcher.cpp
@@ -797,7 +797,7 @@ public:
ResultReadyTester(QFutureWatcher<int> *watcher)
:m_watcher(watcher), filter(false), ok(true), count(0)
{
-
+
}
public slots:
void resultReadyAt(int index)
@@ -834,7 +834,7 @@ void tst_QFutureWatcher::incrementalMapResults()
connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
const int count = 10000;
- QList<int> ints;
+ QList<int> ints;
for (int i = 0; i < count; ++i)
ints << i;
@@ -846,7 +846,7 @@ void tst_QFutureWatcher::incrementalMapResults()
QCOMPARE(resultReadyTester.count, count);
QVERIFY(resultReadyTester.ok);
QVERIFY(watcher.isFinished());
- future.waitForFinished();
+ future.waitForFinished();
}
bool filterer(int i)
@@ -873,7 +873,7 @@ void tst_QFutureWatcher::incrementalFilterResults()
connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
const int count = 10000;
- QList<int> ints;
+ QList<int> ints;
for (int i = 0; i < count; ++i)
ints << i;
@@ -885,12 +885,12 @@ void tst_QFutureWatcher::incrementalFilterResults()
QCOMPARE(resultReadyTester.count, count / 2);
QVERIFY(resultReadyTester.ok);
QVERIFY(watcher.isFinished());
- future.waitForFinished();
+ future.waitForFinished();
}
void tst_QFutureWatcher::qfutureSynchronizer()
{
- int taskCount = 1000;
+ int taskCount = 1000;
QTime t;
t.start();
diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
index e6d824be96..7fbb5e9f5f 100644
--- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp
+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
@@ -1026,7 +1026,7 @@ void tst_QThread::exitAndExec()
thread.sem2.acquire();
int v = thread.value;
QCOMPARE(v, 556);
-
+
//test that the thread is running by executing queued connected signal there
Syncronizer sync1;
sync1.moveToThread(&thread);
diff --git a/tests/auto/corelib/thread/qthreadonce/qthreadonce.h b/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
index eff7924410..5e04a16bb9 100644
--- a/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
@@ -46,8 +46,6 @@
#include <QtCore/qglobal.h>
#include <QtCore/qatomic.h>
-QT_BEGIN_HEADER
-
#ifndef QT_NO_THREAD
@@ -108,6 +106,4 @@ public:
#endif // QT_NO_THREAD
-QT_END_HEADER
-
#endif
diff --git a/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp b/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp
index a586f81ccc..a93a94a470 100644
--- a/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp
+++ b/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp
@@ -64,6 +64,12 @@ QRunnable *createTask(FunctionPointer pointer)
class tst_QThreadPool : public QObject
{
Q_OBJECT
+public:
+ tst_QThreadPool();
+ ~tst_QThreadPool();
+
+ static QMutex *functionTestMutex;
+
private slots:
void runFunction();
void createThreadRunFunction();
@@ -92,8 +98,24 @@ private slots:
void waitForDoneTimeout();
void destroyingWaitsForTasksToFinish();
void stressTest();
+
+private:
+ QMutex m_functionTestMutex;
};
+
+QMutex *tst_QThreadPool::functionTestMutex = 0;
+
+tst_QThreadPool::tst_QThreadPool()
+{
+ tst_QThreadPool::functionTestMutex = &m_functionTestMutex;
+}
+
+tst_QThreadPool::~tst_QThreadPool()
+{
+ tst_QThreadPool::functionTestMutex = 0;
+}
+
int testFunctionCount;
void sleepTestFunction()
@@ -114,19 +136,19 @@ void noSleepTestFunction()
void sleepTestFunctionMutex()
{
- static QMutex testMutex;
+ Q_ASSERT(tst_QThreadPool::functionTestMutex);
QTest::qSleep(1000);
- testMutex.lock();
+ tst_QThreadPool::functionTestMutex->lock();
++testFunctionCount;
- testMutex.unlock();
+ tst_QThreadPool::functionTestMutex->unlock();
}
void noSleepTestFunctionMutex()
{
- static QMutex testMutex;
- testMutex.lock();
+ Q_ASSERT(tst_QThreadPool::functionTestMutex);
+ tst_QThreadPool::functionTestMutex->lock();
++testFunctionCount;
- testMutex.unlock();
+ tst_QThreadPool::functionTestMutex->unlock();
}
void tst_QThreadPool::runFunction()
@@ -761,7 +783,7 @@ void tst_QThreadPool::waitForDoneTimeout()
public:
QMutex mutex;
BlockedTask() { setAutoDelete(false); }
-
+
void run()
{
mutex.lock();
diff --git a/tests/auto/corelib/tools/qchar/tst_qchar.cpp b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
index 478747bf15..c89d553112 100644
--- a/tests/auto/corelib/tools/qchar/tst_qchar.cpp
+++ b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
@@ -709,40 +709,40 @@ void tst_QChar::lineBreakClass()
void tst_QChar::script()
{
- QVERIFY(QUnicodeTables::script(0x0020u) == QUnicodeTables::Common);
- QVERIFY(QUnicodeTables::script(0x0041u) == QUnicodeTables::Common); // ### Latin
- QVERIFY(QUnicodeTables::script(0x0375u) == QUnicodeTables::Greek);
- QVERIFY(QUnicodeTables::script(0x0400u) == QUnicodeTables::Cyrillic);
- QVERIFY(QUnicodeTables::script(0x0531u) == QUnicodeTables::Armenian);
- QVERIFY(QUnicodeTables::script(0x0591u) == QUnicodeTables::Hebrew);
- QVERIFY(QUnicodeTables::script(0x0600u) == QUnicodeTables::Arabic);
- QVERIFY(QUnicodeTables::script(0x0700u) == QUnicodeTables::Syriac);
- QVERIFY(QUnicodeTables::script(0x0780u) == QUnicodeTables::Thaana);
- QVERIFY(QUnicodeTables::script(0x07c0u) == QUnicodeTables::Nko);
- QVERIFY(QUnicodeTables::script(0x0900u) == QUnicodeTables::Devanagari);
- QVERIFY(QUnicodeTables::script(0x0981u) == QUnicodeTables::Bengali);
- QVERIFY(QUnicodeTables::script(0x0a01u) == QUnicodeTables::Gurmukhi);
- QVERIFY(QUnicodeTables::script(0x0a81u) == QUnicodeTables::Gujarati);
- QVERIFY(QUnicodeTables::script(0x0b01u) == QUnicodeTables::Oriya);
- QVERIFY(QUnicodeTables::script(0x0b82u) == QUnicodeTables::Tamil);
- QVERIFY(QUnicodeTables::script(0x0c01u) == QUnicodeTables::Telugu);
- QVERIFY(QUnicodeTables::script(0x0c82u) == QUnicodeTables::Kannada);
- QVERIFY(QUnicodeTables::script(0x0d02u) == QUnicodeTables::Malayalam);
- QVERIFY(QUnicodeTables::script(0x0d82u) == QUnicodeTables::Sinhala);
- QVERIFY(QUnicodeTables::script(0x0e01u) == QUnicodeTables::Thai);
- QVERIFY(QUnicodeTables::script(0x0e81u) == QUnicodeTables::Lao);
- QVERIFY(QUnicodeTables::script(0x0f00u) == QUnicodeTables::Tibetan);
- QVERIFY(QUnicodeTables::script(0x1000u) == QUnicodeTables::Myanmar);
- QVERIFY(QUnicodeTables::script(0x10a0u) == QUnicodeTables::Georgian);
- QVERIFY(QUnicodeTables::script(0x1100u) == QUnicodeTables::Hangul);
- QVERIFY(QUnicodeTables::script(0x1680u) == QUnicodeTables::Ogham);
- QVERIFY(QUnicodeTables::script(0x16a0u) == QUnicodeTables::Runic);
- QVERIFY(QUnicodeTables::script(0x1780u) == QUnicodeTables::Khmer);
- QVERIFY(QUnicodeTables::script(0x200cu) == QUnicodeTables::Inherited);
- QVERIFY(QUnicodeTables::script(0x200du) == QUnicodeTables::Inherited);
- QVERIFY(QUnicodeTables::script(0x1018au) == QUnicodeTables::Greek);
- QVERIFY(QUnicodeTables::script(0x1f130u) == QUnicodeTables::Common);
- QVERIFY(QUnicodeTables::script(0xe0100u) == QUnicodeTables::Inherited);
+ QVERIFY(QChar::script(0x0020u) == QChar::Script_Common);
+ QVERIFY(QChar::script(0x0041u) == QChar::Script_Latin);
+ QVERIFY(QChar::script(0x0375u) == QChar::Script_Greek);
+ QVERIFY(QChar::script(0x0400u) == QChar::Script_Cyrillic);
+ QVERIFY(QChar::script(0x0531u) == QChar::Script_Armenian);
+ QVERIFY(QChar::script(0x0591u) == QChar::Script_Hebrew);
+ QVERIFY(QChar::script(0x0600u) == QChar::Script_Arabic);
+ QVERIFY(QChar::script(0x0700u) == QChar::Script_Syriac);
+ QVERIFY(QChar::script(0x0780u) == QChar::Script_Thaana);
+ QVERIFY(QChar::script(0x07c0u) == QChar::Script_Nko);
+ QVERIFY(QChar::script(0x0900u) == QChar::Script_Devanagari);
+ QVERIFY(QChar::script(0x0981u) == QChar::Script_Bengali);
+ QVERIFY(QChar::script(0x0a01u) == QChar::Script_Gurmukhi);
+ QVERIFY(QChar::script(0x0a81u) == QChar::Script_Gujarati);
+ QVERIFY(QChar::script(0x0b01u) == QChar::Script_Oriya);
+ QVERIFY(QChar::script(0x0b82u) == QChar::Script_Tamil);
+ QVERIFY(QChar::script(0x0c01u) == QChar::Script_Telugu);
+ QVERIFY(QChar::script(0x0c82u) == QChar::Script_Kannada);
+ QVERIFY(QChar::script(0x0d02u) == QChar::Script_Malayalam);
+ QVERIFY(QChar::script(0x0d82u) == QChar::Script_Sinhala);
+ QVERIFY(QChar::script(0x0e01u) == QChar::Script_Thai);
+ QVERIFY(QChar::script(0x0e81u) == QChar::Script_Lao);
+ QVERIFY(QChar::script(0x0f00u) == QChar::Script_Tibetan);
+ QVERIFY(QChar::script(0x1000u) == QChar::Script_Myanmar);
+ QVERIFY(QChar::script(0x10a0u) == QChar::Script_Georgian);
+ QVERIFY(QChar::script(0x1100u) == QChar::Script_Hangul);
+ QVERIFY(QChar::script(0x1680u) == QChar::Script_Ogham);
+ QVERIFY(QChar::script(0x16a0u) == QChar::Script_Runic);
+ QVERIFY(QChar::script(0x1780u) == QChar::Script_Khmer);
+ QVERIFY(QChar::script(0x200cu) == QChar::Script_Inherited);
+ QVERIFY(QChar::script(0x200du) == QChar::Script_Inherited);
+ QVERIFY(QChar::script(0x1018au) == QChar::Script_Greek);
+ QVERIFY(QChar::script(0x1f130u) == QChar::Script_Common);
+ QVERIFY(QChar::script(0xe0100u) == QChar::Script_Inherited);
}
void tst_QChar::normalization_data()
diff --git a/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
index 5ba2f2920a..de252a5d5e 100644
--- a/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
+++ b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
@@ -52,6 +52,7 @@ private slots:
void intermediary_result_data();
void intermediary_result();
void sha1();
+ void sha3();
void files_data();
void files();
};
@@ -118,6 +119,23 @@ void tst_QCryptographicHash::intermediary_result_data()
<< QByteArray("abc") << QByteArray("abc")
<< QByteArray::fromHex("DDAF35A193617ABACC417349AE20413112E6FA4E89A97EA20A9EEEE64B55D39A2192992A274FC1A836BA3C23A3FEEBBD454D4423643CE80E2A9AC94FA54CA49F")
<< QByteArray::fromHex("F3C41E7B63EE869596FC28BAD64120612C520F65928AB4D126C72C6998B551B8FF1CEDDFED4373E6717554DC89D1EEE6F0AB22FD3675E561ABA9AE26A3EEC53B");
+
+ QTest::newRow("sha3_224") << int(QCryptographicHash::Sha3_224)
+ << QByteArray("abc") << QByteArray("abc")
+ << QByteArray::fromHex("C30411768506EBE1C2871B1EE2E87D38DF342317300A9B97A95EC6A8")
+ << QByteArray::fromHex("048330E7C7C8B4A41AB713B3A6F958D77B8CF3EE969930F1584DD550");
+ QTest::newRow("sha3_256") << int(QCryptographicHash::Sha3_256)
+ << QByteArray("abc") << QByteArray("abc")
+ << QByteArray::fromHex("4E03657AEA45A94FC7D47BA826C8D667C0D1E6E33A64A036EC44F58FA12D6C45")
+ << QByteArray::fromHex("9F0ADAD0A59B05D2E04A1373342B10B9EB16C57C164C8A3BFCBF46DCCEE39A21");
+ QTest::newRow("sha3_384") << int(QCryptographicHash::Sha3_384)
+ << QByteArray("abc") << QByteArray("abc")
+ << QByteArray::fromHex("F7DF1165F033337BE098E7D288AD6A2F74409D7A60B49C36642218DE161B1F99F8C681E4AFAF31A34DB29FB763E3C28E")
+ << QByteArray::fromHex("D733B87D392D270889D3DA23AE113F349E25574B445F319CDE4CD3F877C753E9E3C65980421339B3A131457FF393939F");
+ QTest::newRow("sha3_512") << int(QCryptographicHash::Sha3_512)
+ << QByteArray("abc") << QByteArray("abc")
+ << QByteArray::fromHex("18587DC2EA106B9A1563E32B3312421CA164C7F1F07BC922A9C83D77CEA3A1E5D0C69910739025372DC14AC9642629379540C17E2A65B19D77AA511A9D00BB96")
+ << QByteArray::fromHex("A7C392D2A42155761CA76BDDDE1C47D55486B007EDF465397BFB9DFA74D11C8F0D7C86CD29415283F1B5E7F655CEC25B869C9E9C33A8986F0B38542FB12BFB93");
}
void tst_QCryptographicHash::intermediary_result()
@@ -151,22 +169,71 @@ void tst_QCryptographicHash::sha1()
// A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
QCOMPARE(QCryptographicHash::hash("abc", QCryptographicHash::Sha1).toHex().toUpper(),
QByteArray("A9993E364706816ABA3E25717850C26C9CD0D89D"));
-
+
// SHA1("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") =
// 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
QCOMPARE(QCryptographicHash::hash("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
QCryptographicHash::Sha1).toHex().toUpper(),
QByteArray("84983E441C3BD26EBAAE4AA1F95129E5E54670F1"));
-
+
// SHA1(A million repetitions of "a") =
// 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
QByteArray as;
for (int i = 0; i < 1000000; ++i)
as += 'a';
- QCOMPARE(QCryptographicHash::hash(as, QCryptographicHash::Sha1).toHex().toUpper(),
+ QCOMPARE(QCryptographicHash::hash(as, QCryptographicHash::Sha1).toHex().toUpper(),
QByteArray("34AA973CD4C4DAA4F61EEB2BDBAD27316534016F"));
}
+void tst_QCryptographicHash::sha3()
+{
+ // SHA3-224("The quick brown fox jumps over the lazy dog")
+ // 10aee6b30c47350576ac2873fa89fd190cdc488442f3ef654cf23fe
+ QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog",
+ QCryptographicHash::Sha3_224).toHex(),
+ QByteArray("310aee6b30c47350576ac2873fa89fd190cdc488442f3ef654cf23fe"));
+ // SHA3-224("The quick brown fox jumps over the lazy dog.")
+ // c59d4eaeac728671c635ff645014e2afa935bebffdb5fbd207ffdeab
+ QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog.",
+ QCryptographicHash::Sha3_224).toHex(),
+ QByteArray("c59d4eaeac728671c635ff645014e2afa935bebffdb5fbd207ffdeab"));
+
+ // SHA3-256("The quick brown fox jumps over the lazy dog")
+ // 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
+ QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog",
+ QCryptographicHash::Sha3_256).toHex(),
+ QByteArray("4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15"));
+
+ // SHA3-256("The quick brown fox jumps over the lazy dog.")
+ // 578951e24efd62a3d63a86f7cd19aaa53c898fe287d2552133220370240b572d
+ QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog.",
+ QCryptographicHash::Sha3_256).toHex(),
+ QByteArray("578951e24efd62a3d63a86f7cd19aaa53c898fe287d2552133220370240b572d"));
+
+ // SHA3-384("The quick brown fox jumps over the lazy dog")
+ // 283990fa9d5fb731d786c5bbee94ea4db4910f18c62c03d173fc0a5e494422e8a0b3da7574dae7fa0baf005e504063b3
+ QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog",
+ QCryptographicHash::Sha3_384).toHex(),
+ QByteArray("283990fa9d5fb731d786c5bbee94ea4db4910f18c62c03d173fc0a5e494422e8a0b3da7574dae7fa0baf005e504063b3"));
+
+ // SHA3-384("The quick brown fox jumps over the lazy dog.")
+ // 9ad8e17325408eddb6edee6147f13856ad819bb7532668b605a24a2d958f88bd5c169e56dc4b2f89ffd325f6006d820b
+ QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog.",
+ QCryptographicHash::Sha3_384).toHex(),
+ QByteArray("9ad8e17325408eddb6edee6147f13856ad819bb7532668b605a24a2d958f88bd5c169e56dc4b2f89ffd325f6006d820b"));
+
+ // SHA3-512("The quick brown fox jumps over the lazy dog")
+ // d135bb84d0439dbac432247ee573a23ea7d3c9deb2a968eb31d47c4fb45f1ef4422d6c531b5b9bd6f449ebcc449ea94d0a8f05f62130fda612da53c79659f609
+ QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog",
+ QCryptographicHash::Sha3_512).toHex(),
+ QByteArray("d135bb84d0439dbac432247ee573a23ea7d3c9deb2a968eb31d47c4fb45f1ef4422d6c531b5b9bd6f449ebcc449ea94d0a8f05f62130fda612da53c79659f609"));
+
+ // SHA3-512("The quick brown fox jumps over the lazy dog.")
+ // ab7192d2b11f51c7dd744e7b3441febf397ca07bf812cceae122ca4ded6387889064f8db9230f173f6d1ab6e24b6e50f065b039f799f5592360a6558eb52d760
+ QCOMPARE(QCryptographicHash::hash("The quick brown fox jumps over the lazy dog.",
+ QCryptographicHash::Sha3_512).toHex(),
+ QByteArray("ab7192d2b11f51c7dd744e7b3441febf397ca07bf812cceae122ca4ded6387889064f8db9230f173f6d1ab6e24b6e50f065b039f799f5592360a6558eb52d760"));
+}
Q_DECLARE_METATYPE(QCryptographicHash::Algorithm);
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index 05a6c6b252..4e5b0a3555 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -145,6 +145,8 @@ private:
QDateTime invalidDateTime() const { return QDateTime(invalidDate(), invalidTime()); }
QDate invalidDate() const { return QDate(); }
QTime invalidTime() const { return QTime(-1, -1, -1); }
+ qint64 minJd() const { return QDateTimePrivate::minJd(); }
+ qint64 maxJd() const { return QDateTimePrivate::maxJd(); }
};
Q_DECLARE_METATYPE(Qt::TimeSpec)
@@ -462,14 +464,25 @@ void tst_QDateTime::setMSecsSinceEpoch_data()
<< (Q_INT64_C(123456) << 32)
<< QDateTime(QDate(18772, 8, 15), QTime(1, 8, 14, 976), Qt::UTC)
<< QDateTime(QDate(18772, 8, 15), QTime(3, 8, 14, 976));
- QTest::newRow("min_date") // julian day 0 is an invalid date for QDate
+ QTest::newRow("old min (Tue Nov 25 00:00:00 -4714)")
<< Q_INT64_C(-210866716800000)
<< QDateTime(QDate::fromJulianDay(1), QTime(), Qt::UTC)
<< QDateTime(QDate::fromJulianDay(1), QTime(1, 0));
- QTest::newRow("max_date") // technically jd is unsigned, but fromJulianDay takes int
+ QTest::newRow("old max (Tue Jun 3 21:59:59 5874898)")
<< Q_INT64_C(185331720376799999)
<< QDateTime(QDate::fromJulianDay(0x7fffffff), QTime(21, 59, 59, 999), Qt::UTC)
<< QDateTime(QDate::fromJulianDay(0x7fffffff), QTime(23, 59, 59, 999));
+ QTest::newRow("min")
+ // + 1 because, in the reference check below, calling addMSecs(qint64min)
+ // will internally apply unary minus to -qint64min, resulting in a
+ // positive value 1 too big for qint64max, causing an overflow.
+ << std::numeric_limits<qint64>::min() + 1
+ << QDateTime(QDate(-292275056, 5, 16), QTime(16, 47, 4, 193), Qt::UTC)
+ << QDateTime(QDate(-292275056, 5, 16), QTime(17, 47, 4, 193), Qt::LocalTime);
+ QTest::newRow("max")
+ << std::numeric_limits<qint64>::max()
+ << QDateTime(QDate(292278994, 8, 17), QTime(7, 12, 55, 807), Qt::UTC)
+ << QDateTime(QDate(292278994, 8, 17), QTime(9, 12, 55, 807), Qt::LocalTime);
}
void tst_QDateTime::setMSecsSinceEpoch()
@@ -821,6 +834,29 @@ void tst_QDateTime::toTimeSpec_data()
QTest::newRow("winter4") << QDateTime(QDate(6000, 2, 29), utcTime, Qt::UTC)
<< QDateTime(QDate(6000, 2, 29), localStandardTime, Qt::LocalTime);
+ // Test mktime boundaries (1970 - 2038) and adjustDate().
+ QTest::newRow("1969/12/31 23:00 UTC")
+ << QDateTime(QDate(1969, 12, 31), QTime(23, 0, 0), Qt::UTC)
+ << QDateTime(QDate(1970, 1, 1), QTime(0, 0, 0), Qt::LocalTime);
+ QTest::newRow("2037/12/31 23:00 UTC")
+ << QDateTime(QDate(2037, 12, 31), QTime(23, 0, 0), Qt::UTC)
+ << QDateTime(QDate(2038, 1, 1), QTime(0, 0, 0), Qt::LocalTime);
+
+ QTest::newRow("-271821/4/20 00:00 UTC (JavaScript min date, start of day)")
+ << QDateTime(QDate(-271821, 4, 20), QTime(0, 0, 0), Qt::UTC)
+ << QDateTime(QDate(-271821, 4, 20), QTime(1, 0, 0), Qt::LocalTime);
+ QTest::newRow("-271821/4/20 23:00 UTC (JavaScript min date, end of day)")
+ << QDateTime(QDate(-271821, 4, 20), QTime(23, 0, 0), Qt::UTC)
+ << QDateTime(QDate(-271821, 4, 21), QTime(0, 0, 0), Qt::LocalTime);
+
+ QTest::newRow("QDate min")
+ << QDateTime(QDate::fromJulianDay(minJd()), QTime(0, 0, 0), Qt::UTC)
+ << QDateTime(QDate::fromJulianDay(minJd()), QTime(1, 0, 0), Qt::LocalTime);
+
+ QTest::newRow("QDate max")
+ << QDateTime(QDate::fromJulianDay(maxJd()), QTime(22, 59, 59), Qt::UTC)
+ << QDateTime(QDate::fromJulianDay(maxJd()), QTime(23, 59, 59), Qt::LocalTime);
+
if (europeanTimeZone) {
QTest::newRow("summer1") << QDateTime(QDate(2004, 6, 30), utcTime, Qt::UTC)
<< QDateTime(QDate(2004, 6, 30), localDaylightTime, Qt::LocalTime);
@@ -835,6 +871,14 @@ void tst_QDateTime::toTimeSpec_data()
#endif
QTest::newRow("summer3") << QDateTime(QDate(4000, 6, 30), utcTime, Qt::UTC)
<< QDateTime(QDate(4000, 6, 30), localDaylightTime, Qt::LocalTime);
+
+ QTest::newRow("275760/9/23 00:00 UTC (JavaScript max date, start of day)")
+ << QDateTime(QDate(275760, 9, 23), QTime(0, 0, 0), Qt::UTC)
+ << QDateTime(QDate(275760, 9, 23), QTime(2, 0, 0), Qt::LocalTime);
+
+ QTest::newRow("275760/9/23 22:00 UTC (JavaScript max date, end of day)")
+ << QDateTime(QDate(275760, 9, 23), QTime(22, 0, 0), Qt::UTC)
+ << QDateTime(QDate(275760, 9, 24), QTime(0, 0, 0), Qt::LocalTime);
}
QTest::newRow("msec") << QDateTime(QDate(4000, 6, 30), utcTime.addMSecs(1), Qt::UTC)
diff --git a/tests/auto/corelib/tools/qhash/tst_qhash.cpp b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
index 6df84e6363..1cbf181286 100644
--- a/tests/auto/corelib/tools/qhash/tst_qhash.cpp
+++ b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
@@ -74,6 +74,7 @@ private slots:
void const_shared_null();
void twoArguments_qHash();
+ void initializerList();
};
struct Foo {
@@ -844,7 +845,7 @@ void tst_QHash::iterators()
//STL-Style iterators
QHash<int, QString>::iterator stlIt = hash.begin();
- for(stlIt = hash.begin(), i = 1; stlIt != hash.end(), i < 100; ++stlIt, ++i) {
+ for (stlIt = hash.begin(), i = 1; stlIt != hash.end() && i < 100; ++stlIt, ++i) {
testMap.insert(i,stlIt.value());
//QVERIFY(stlIt.value() == hash.value(
}
@@ -869,7 +870,7 @@ void tst_QHash::iterators()
//STL-Style const-iterators
QHash<int, QString>::const_iterator cstlIt = hash.constBegin();
- for(cstlIt = hash.constBegin(), i = 1; cstlIt != hash.constEnd(), i < 100; ++cstlIt, ++i) {
+ for (cstlIt = hash.constBegin(), i = 1; cstlIt != hash.constEnd() && i < 100; ++cstlIt, ++i) {
testMap.insert(i,cstlIt.value());
//QVERIFY(stlIt.value() == hash.value(
}
@@ -1300,5 +1301,34 @@ void tst_QHash::twoArguments_qHash()
QCOMPARE(wrongqHashOverload, 0);
}
+void tst_QHash::initializerList()
+{
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ QHash<int, QString> hash{{1, "hello"}, {2, "initializer_list"}};
+ QCOMPARE(hash.count(), 2);
+ QVERIFY(hash[1] == "hello");
+ QVERIFY(hash[2] == "initializer_list");
+
+ QMultiHash<QString, int> multiHash{{"il", 1}, {"il", 2}, {"il", 3}};
+ QCOMPARE(multiHash.count(), 3);
+ QList<int> values = multiHash.values("il");
+ QCOMPARE(values.count(), 3);
+
+ QHash<int, int> emptyHash{};
+ QVERIFY(emptyHash.isEmpty());
+
+ QHash<int, char> emptyPairs{{}, {}};
+ QVERIFY(!emptyPairs.isEmpty());
+
+ QMultiHash<QString, double> emptyMultiHash{};
+ QVERIFY(emptyMultiHash.isEmpty());
+
+ QMultiHash<int, float> emptyPairs2{{}, {}};
+ QVERIFY(!emptyPairs2.isEmpty());
+#else
+ QSKIP("Compiler doesn't support initializer lists");
+#endif
+}
+
QTEST_APPLESS_MAIN(tst_QHash)
#include "tst_qhash.moc"
diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
index d58d207546..ed74c939f7 100644
--- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
+++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
@@ -42,7 +42,7 @@
#include <QtTest/QtTest>
#include <math.h>
-#include <qglobal.h>
+#include <qdebug.h>
#include <qdir.h>
#include <qfileinfo.h>
#include <QScopedArrayPointer>
@@ -712,6 +712,7 @@ void tst_QLocale::double_conversion()
QFETCH(QString, num_str);
QFETCH(bool, good);
QFETCH(double, num);
+ QStringRef num_strRef = num_str.leftRef(-1);
QLocale locale(locale_name);
QCOMPARE(locale.name(), locale_name);
@@ -726,6 +727,16 @@ void tst_QLocale::double_conversion()
diff = -diff;
QVERIFY(diff <= MY_DOUBLE_EPSILON);
}
+
+ d = locale.toDouble(num_strRef, &ok);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ double diff = d - num;
+ if (diff < 0)
+ diff = -diff;
+ QVERIFY(diff <= MY_DOUBLE_EPSILON);
+ }
}
void tst_QLocale::long_long_conversion_data()
@@ -787,6 +798,7 @@ void tst_QLocale::long_long_conversion()
QFETCH(QString, num_str);
QFETCH(bool, good);
QFETCH(qlonglong, num);
+ QStringRef num_strRef = num_str.leftRef(-1);
QLocale locale(locale_name);
QCOMPARE(locale.name(), locale_name);
@@ -795,9 +807,14 @@ void tst_QLocale::long_long_conversion()
qlonglong l = locale.toLongLong(num_str, &ok);
QCOMPARE(ok, good);
- if (ok) {
+ if (ok)
+ QCOMPARE(l, num);
+
+ l = locale.toLongLong(num_strRef, &ok);
+ QCOMPARE(ok, good);
+
+ if (ok)
QCOMPARE(l, num);
- }
}
void tst_QLocale::long_long_conversion_extra()
@@ -1281,7 +1298,7 @@ static QString getWinLocaleInfo(LCTYPE type)
int cnt = GetLocaleInfo(id, type, 0, 0) * 2;
if (cnt == 0) {
- qWarning("QLocale: empty windows locale info (%d)", type);
+ qWarning().nospace() << "QLocale: empty windows locale info (" << type << ')';
return QString();
}
cnt /= sizeof(wchar_t);
@@ -1289,7 +1306,7 @@ static QString getWinLocaleInfo(LCTYPE type)
cnt = GetLocaleInfo(id, type, buf.data(), cnt);
if (cnt == 0) {
- qWarning("QLocale: empty windows locale info (%d)", type);
+ qWarning().nospace() << "QLocale: empty windows locale info (" << type << ')';
return QString();
}
return QString::fromWCharArray(buf.data());
@@ -1680,6 +1697,9 @@ void tst_QLocale::dateFormat()
const QLocale ja("ja_JP");
QCOMPARE(ja.dateFormat(QLocale::ShortFormat), QLatin1String("yyyy/MM/dd"));
+
+ const QLocale ir("ga_IE");
+ QCOMPARE(ir.dateFormat(QLocale::ShortFormat), QLatin1String("dd/MM/yyyy"));
}
void tst_QLocale::timeFormat()
diff --git a/tests/auto/corelib/tools/qmap/tst_qmap.cpp b/tests/auto/corelib/tools/qmap/tst_qmap.cpp
index 5069b805bf..0742f19a5e 100644
--- a/tests/auto/corelib/tools/qmap/tst_qmap.cpp
+++ b/tests/auto/corelib/tools/qmap/tst_qmap.cpp
@@ -84,6 +84,9 @@ private slots:
void insert();
void checkMostLeftNode();
+ void initializerList();
+ void testInsertWithHint();
+ void testInsertMultiWithHint();
};
typedef QMap<QString, QString> StringMap;
@@ -937,6 +940,18 @@ void tst_QMap::qmultimap_specific()
QVERIFY(map2.remove(42,5));
QVERIFY(map1 == map2);
}
+
+ map1.insert(map1.constBegin(), -1, -1);
+ QCOMPARE(map1.size(), 45);
+ map1.insert(map1.constBegin(), -1, -1);
+ QCOMPARE(map1.size(), 46);
+ map1.insert(map1.constBegin(), -2, -2);
+ QCOMPARE(map1.size(), 47);
+ map1.insert(map1.constBegin(), 5, 5); // Invald hint
+ QCOMPARE(map1.size(), 48);
+ map1.insert(map1.constBegin(), 5, 5); // Invald hint
+ QCOMPARE(map1.size(), 49);
+ sanityCheckTree(map1, __LINE__);
}
void tst_QMap::const_shared_null()
@@ -1129,5 +1144,151 @@ void tst_QMap::checkMostLeftNode()
sanityCheckTree(map, __LINE__);
}
+void tst_QMap::initializerList()
+{
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ QMap<int, QString> map{{1, "hello"}, {2, "initializer_list"}};
+ QCOMPARE(map.count(), 2);
+ QVERIFY(map[1] == "hello");
+ QVERIFY(map[2] == "initializer_list");
+
+ QMultiMap<QString, int> multiMap{{"il", 1}, {"il", 2}, {"il", 3}};
+ QCOMPARE(multiMap.count(), 3);
+ QList<int> values = multiMap.values("il");
+ QCOMPARE(values.count(), 3);
+
+ QMap<int, int> emptyMap{};
+ QVERIFY(emptyMap.isEmpty());
+
+ QMap<char, char> emptyPairs{{}, {}};
+ QVERIFY(!emptyPairs.isEmpty());
+
+ QMultiMap<double, double> emptyMultiMap{};
+ QVERIFY(emptyMultiMap.isEmpty());
+
+ QMultiMap<float, float> emptyPairs2{{}, {}};
+ QVERIFY(!emptyPairs2.isEmpty());
+#else
+ QSKIP("Compiler doesn't support initializer lists");
+#endif
+}
+
+void tst_QMap::testInsertWithHint()
+{
+ QMap<int, int> map;
+ map.setSharable(false);
+
+ // Check with end hint();
+ map.insert(map.constEnd(), 3, 1); // size == 1
+ sanityCheckTree(map, __LINE__);
+ map.insert(map.constEnd(), 5, 1); // size = 2
+ sanityCheckTree(map, __LINE__);
+ map.insert(map.constEnd(), 50, 1); // size = 3
+ sanityCheckTree(map, __LINE__);
+ QMap<int, int>::const_iterator key75(map.insert(map.constEnd(), 75, 1)); // size = 4
+ sanityCheckTree(map, __LINE__);
+ map.insert(map.constEnd(), 100, 1); // size = 5
+ sanityCheckTree(map, __LINE__);
+ map.insert(map.constEnd(), 105, 1); // size = 6
+ sanityCheckTree(map, __LINE__);
+ map.insert(map.constEnd(), 10, 5); // invalid hint and size = 7
+ sanityCheckTree(map, __LINE__);
+ QMap<int, int>::iterator lastkey = map.insert(map.constEnd(), 105, 12); // overwrite
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(lastkey.value(), 12);
+ QCOMPARE(lastkey.key(), 105);
+ QCOMPARE(map.size(), 7);
+
+ // With regular hint
+ map.insert(key75, 75, 100); // overwrite current key
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 7);
+ QCOMPARE(key75.key(), 75);
+ QCOMPARE(key75.value(), 100);
+
+ map.insert(key75, 50, 101); // overwrite previous value
+ QMap<int, int>::const_iterator key50(key75);
+ --key50;
+ QCOMPARE(map.size(), 7);
+ QCOMPARE(key50.key(), 50);
+ QCOMPARE(key50.value(), 101);
+
+ map.insert(key75, 17, 125); // invalid hint - size 8
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 8);
+
+ // begin
+ map.insert(map.constBegin(), 1, 1); // size 9
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 9);
+
+ map.insert(map.constBegin(), 1, 10); // overwrite existing (leftmost) value
+ QCOMPARE(map.constBegin().value(), 10);
+
+ map.insert(map.constBegin(), 47, 47); // wrong hint - size 10
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 10);
+
+ // insert with right == 0
+ QMap<int, int>::const_iterator i1 (map.insert(key75, 70, 12)); // overwrite
+ map.insert(i1, 69, 12); // size 12
+
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 12);
+}
+
+void tst_QMap::testInsertMultiWithHint()
+{
+ QMap<int, int> map;
+ map.setSharable(false);
+
+ typedef QMap<int, int>::const_iterator cite; // Hack since we define QT_STRICT_ITERATORS
+ map.insertMulti(cite(map.end()), 64, 65);
+ map[128] = 129;
+ map[256] = 257;
+ sanityCheckTree(map, __LINE__);
+
+ map.insertMulti(cite(map.end()), 512, 513);
+ map.insertMulti(cite(map.end()), 512, 513 * 2);
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 5);
+ map.insertMulti(cite(map.end()), 256, 258); // wrong hint
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 6);
+
+ QMap<int, int>::iterator i = map.insertMulti(map.constBegin(), 256, 259); // wrong hint
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 7);
+
+ QMap<int, int>::iterator j = map.insertMulti(map.constBegin(), 69, 66);
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 8);
+
+ j = map.insertMulti(cite(j), 68, 259);
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 9);
+
+ j = map.insertMulti(cite(j), 67, 67);
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 10);
+
+ i = map.insertMulti(cite(i), 256, 259);
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 11);
+
+ i = map.insertMulti(cite(i), 256, 260);
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 12);
+
+ map.insertMulti(cite(i), 64, 67);
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 13);
+
+ map.insertMulti(map.constBegin(), 20, 20);
+ sanityCheckTree(map, __LINE__);
+ QCOMPARE(map.size(), 14);
+}
+
+
QTEST_APPLESS_MAIN(tst_QMap)
#include "tst_qmap.moc"
diff --git a/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp b/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
index 9700f91128..d22e771b79 100644
--- a/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
+++ b/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
@@ -50,6 +50,7 @@ class tst_QMargins : public QObject
private slots:
void getSetCheck();
void dataStreamCheck();
+ void operators();
};
// Testing get/set functions
@@ -73,7 +74,50 @@ void tst_QMargins::getSetCheck()
margins.setRight(5);
QVERIFY(!margins.isNull());
QCOMPARE(margins, QMargins(5, 0, 5, 0));
-}
+}
+
+void tst_QMargins::operators()
+{
+ const QMargins m1(12, 14, 16, 18);
+ const QMargins m2(2, 3, 4, 5);
+
+ const QMargins added = m1 + m2;
+ QCOMPARE(added, QMargins(14, 17, 20, 23));
+ QMargins a = m1;
+ a += m2;
+ QCOMPARE(a, added);
+
+ const QMargins subtracted = m1 - m2;
+ QCOMPARE(subtracted, QMargins(10, 11, 12, 13));
+ a = m1;
+ a -= m2;
+ QCOMPARE(a, subtracted);
+
+ const QMargins doubled = m1 * 2;
+ QCOMPARE(doubled, QMargins(24, 28, 32, 36));
+ QCOMPARE(2 * m1, doubled);
+ QCOMPARE(qreal(2) * m1, doubled);
+ QCOMPARE(m1 * qreal(2), doubled);
+
+ a = m1;
+ a *= 2;
+ QCOMPARE(a, doubled);
+ a = m1;
+ a *= qreal(2);
+ QCOMPARE(a, doubled);
+
+ const QMargins halved = m1 / 2;
+ QCOMPARE(halved, QMargins(6, 7, 8, 9));
+
+ a = m1;
+ a /= 2;
+ QCOMPARE(a, halved);
+ a = m1;
+ a /= qreal(2);
+ QCOMPARE(a, halved);
+
+ QCOMPARE(m1 + (-m1), QMargins());
+}
// Testing QDataStream operators
void tst_QMargins::dataStreamCheck()
diff --git a/tests/auto/corelib/tools/qmessageauthenticationcode/.gitignore b/tests/auto/corelib/tools/qmessageauthenticationcode/.gitignore
new file mode 100644
index 0000000000..bfd53f437b
--- /dev/null
+++ b/tests/auto/corelib/tools/qmessageauthenticationcode/.gitignore
@@ -0,0 +1 @@
+tst_qmessageauthenticationcode
diff --git a/tests/auto/corelib/tools/qmessageauthenticationcode/qmessageauthenticationcode.pro b/tests/auto/corelib/tools/qmessageauthenticationcode/qmessageauthenticationcode.pro
new file mode 100644
index 0000000000..1ea23915b7
--- /dev/null
+++ b/tests/auto/corelib/tools/qmessageauthenticationcode/qmessageauthenticationcode.pro
@@ -0,0 +1,7 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qmessageauthenticationcode
+QT = core testlib
+SOURCES = tst_qmessageauthenticationcode.cpp
+
+TESTDATA += data/*
+DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/corelib/tools/qmessageauthenticationcode/tst_qmessageauthenticationcode.cpp b/tests/auto/corelib/tools/qmessageauthenticationcode/tst_qmessageauthenticationcode.cpp
new file mode 100644
index 0000000000..0e243988e2
--- /dev/null
+++ b/tests/auto/corelib/tools/qmessageauthenticationcode/tst_qmessageauthenticationcode.cpp
@@ -0,0 +1,151 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Ruslan Nigmatullin <euroelessar@yandex.ru>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <QtCore/QCoreApplication>
+#include <QtTest/QtTest>
+
+class tst_QMessageAuthenticationCode : public QObject
+{
+ Q_OBJECT
+private slots:
+ void result_data();
+ void result();
+ void result_incremental_data();
+ void result_incremental();
+};
+
+Q_DECLARE_METATYPE(QCryptographicHash::Algorithm)
+
+void tst_QMessageAuthenticationCode::result_data()
+{
+ QTest::addColumn<QCryptographicHash::Algorithm>("algo");
+ QTest::addColumn<QByteArray>("key");
+ QTest::addColumn<QByteArray>("message");
+ QTest::addColumn<QByteArray>("code");
+
+ // Empty values
+ QTest::newRow("md5-empty") << QCryptographicHash::Md5
+ << QByteArray()
+ << QByteArray()
+ << QByteArray::fromHex("74e6f7298a9c2d168935f58c001bad88");
+ QTest::newRow("sha1-empty") << QCryptographicHash::Sha1
+ << QByteArray()
+ << QByteArray()
+ << QByteArray::fromHex("fbdb1d1b18aa6c08324b7d64b71fb76370690e1d");
+ QTest::newRow("sha256-empty") << QCryptographicHash::Sha256
+ << QByteArray()
+ << QByteArray()
+ << QByteArray::fromHex("b613679a0814d9ec772f95d778c35fc5ff1697c493715653c6c712144292c5ad");
+
+ // Some not-empty
+ QTest::newRow("md5") << QCryptographicHash::Md5
+ << QByteArray("key")
+ << QByteArray("The quick brown fox jumps over the lazy dog")
+ << QByteArray::fromHex("80070713463e7749b90c2dc24911e275");
+ QTest::newRow("sha1") << QCryptographicHash::Sha1
+ << QByteArray("key")
+ << QByteArray("The quick brown fox jumps over the lazy dog")
+ << QByteArray::fromHex("de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9");
+ QTest::newRow("sha256") << QCryptographicHash::Sha256
+ << QByteArray("key")
+ << QByteArray("The quick brown fox jumps over the lazy dog")
+ << QByteArray::fromHex("f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8");
+
+ // Some from rfc-2104
+ QTest::newRow("rfc-md5-1") << QCryptographicHash::Md5
+ << QByteArray::fromHex("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b")
+ << QByteArray("Hi There")
+ << QByteArray::fromHex("9294727a3638bb1c13f48ef8158bfc9d");
+ QTest::newRow("rfc-md5-2") << QCryptographicHash::Md5
+ << QByteArray("Jefe")
+ << QByteArray("what do ya want for nothing?")
+ << QByteArray::fromHex("750c783e6ab0b503eaa86e310a5db738");
+ QTest::newRow("rfc-md5-3") << QCryptographicHash::Md5
+ << QByteArray::fromHex("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
+ << QByteArray(50, 0xdd)
+ << QByteArray::fromHex("56be34521d144c88dbb8c733f0e8b3f6");
+}
+
+void tst_QMessageAuthenticationCode::result()
+{
+ QFETCH(QCryptographicHash::Algorithm, algo);
+ QFETCH(QByteArray, key);
+ QFETCH(QByteArray, message);
+ QFETCH(QByteArray, code);
+
+ QMessageAuthenticationCode mac(algo);
+ mac.setKey(key);
+ mac.addData(message);
+ QByteArray result = mac.result();
+
+ QCOMPARE(result, code);
+}
+
+void tst_QMessageAuthenticationCode::result_incremental_data()
+{
+ result_data();
+}
+
+void tst_QMessageAuthenticationCode::result_incremental()
+{
+ QFETCH(QCryptographicHash::Algorithm, algo);
+ QFETCH(QByteArray, key);
+ QFETCH(QByteArray, message);
+ QFETCH(QByteArray, code);
+
+ int index = message.length() / 2;
+ QByteArray leftPart(message.mid(0, index));
+ QByteArray rightPart(message.mid(index));
+
+ QCOMPARE(leftPart + rightPart, message);
+
+ QMessageAuthenticationCode mac(algo);
+ mac.setKey(key);
+ mac.addData(leftPart);
+ mac.addData(rightPart);
+ QByteArray result = mac.result();
+
+ QCOMPARE(result, code);
+}
+
+QTEST_MAIN(tst_QMessageAuthenticationCode)
+#include "tst_qmessageauthenticationcode.moc"
diff --git a/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
index 924cac292e..3231469261 100644
--- a/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
+++ b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
@@ -70,6 +70,9 @@ private slots:
void operator_divide_data();
void operator_divide();
+ void dotProduct_data();
+ void dotProduct();
+
void operator_unary_plus_data();
void operator_unary_plus();
@@ -271,6 +274,28 @@ void tst_QPoint::operator_divide()
QCOMPARE(point, expected);
}
+void tst_QPoint::dotProduct_data()
+{
+ QTest::addColumn<QPoint>("point1");
+ QTest::addColumn<QPoint>("point2");
+ QTest::addColumn<int>("expected");
+
+ QTest::newRow("(0, 0) dot (0, 0)") << QPoint(0, 0) << QPoint(0, 0)<< 0;
+ QTest::newRow("(10, 0) dot (0, 10)") << QPoint(10, 0) << QPoint(0, 10) << 0;
+ QTest::newRow("(0, 10) dot (10, 0)") << QPoint(0, 10) << QPoint(10, 0) << 0;
+ QTest::newRow("(10, 20) dot (-10, -20)") << QPoint(10, 20) << QPoint(-10, -20) << -500;
+ QTest::newRow("(-10, -20) dot (10, 20)") << QPoint(-10, -20) << QPoint(10, 20) << -500;
+}
+
+void tst_QPoint::dotProduct()
+{
+ QFETCH(QPoint, point1);
+ QFETCH(QPoint, point2);
+ QFETCH(int, expected);
+
+ QCOMPARE(QPoint::dotProduct(point1, point2), expected);
+}
+
void tst_QPoint::operator_unary_plus_data()
{
operator_unary_minus_data();
diff --git a/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp b/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
index 0f2e74e68e..fc79b40a18 100644
--- a/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
+++ b/tests/auto/corelib/tools/qpointf/tst_qpointf.cpp
@@ -75,6 +75,9 @@ private slots:
void operator_divide();
void division();
+ void dotProduct_data();
+ void dotProduct();
+
void operator_unary_plus_data();
void operator_unary_plus();
@@ -290,6 +293,29 @@ void tst_QPointF::division()
}
}
+void tst_QPointF::dotProduct_data()
+{
+ QTest::addColumn<QPointF>("point1");
+ QTest::addColumn<QPointF>("point2");
+ QTest::addColumn<qreal>("expected");
+
+ QTest::newRow("(0, 0) dot (0, 0)") << QPointF(0, 0) << QPointF(0, 0) << qreal(0);
+ QTest::newRow("(10, 0) dot (0, 10)") << QPointF(10, 0) << QPointF(0, 10)<< qreal(0);
+ QTest::newRow("(0, 10) dot (10, 0)") << QPointF(0, 10) << QPointF(10, 0) << qreal(0);
+ QTest::newRow("(10, 20) dot (-10, -20)") << QPointF(10, 20) << QPointF(-10, -20) << qreal(-500);
+ QTest::newRow("(10.1, 20.2) dot (-10.1, -20.2)") << QPointF(10.1, 20.2) << QPointF(-10.1, -20.2) << qreal(-510.05);
+ QTest::newRow("(-10.1, -20.2) dot (10.1, 20.2)") << QPointF(-10.1, -20.2) << QPointF(10.1, 20.2) << qreal(-510.05);
+}
+
+void tst_QPointF::dotProduct()
+{
+ QFETCH(QPointF, point1);
+ QFETCH(QPointF, point2);
+ QFETCH(qreal, expected);
+
+ QCOMPARE(QPointF::dotProduct(point1, point2), expected);
+}
+
void tst_QPointF::operator_unary_plus_data()
{
operator_unary_minus_data();
diff --git a/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp b/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
index 88de03e4bf..2fdde3c613 100644
--- a/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
+++ b/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
@@ -63,15 +63,15 @@ void tst_QQueue::enqueue_dequeue_data()
void tst_QQueue::enqueue_dequeue()
{
- QFETCH(int, num_items);
-
- int *values = new int[num_items];
- QQueue<int> queue_v;
- QQueue<int*> queue_p;
+ QFETCH(int, num_items);
+
+ int *values = new int[num_items];
+ QQueue<int> queue_v;
+ QQueue<int*> queue_p;
QVERIFY(queue_v.empty());
QVERIFY(queue_p.empty());
-
+
for (int i = 0; i < num_items; i++ ) {
values[i] = i;
queue_p.enqueue(values + i);
@@ -84,11 +84,11 @@ void tst_QQueue::enqueue_dequeue()
v = queue_v.head();
p = queue_p.head();
QCOMPARE(*p, v);
- QCOMPARE(v, i);
+ QCOMPARE(v, i);
v = queue_v.dequeue();
p = queue_p.dequeue();
- QCOMPARE(*p, v);
- QCOMPARE(v, values[i]);
+ QCOMPARE(*p, v);
+ QCOMPARE(v, values[i]);
}
QVERIFY(queue_v.empty());
QVERIFY(queue_p.empty());
diff --git a/tests/auto/corelib/tools/qrect/tst_qrect.cpp b/tests/auto/corelib/tools/qrect/tst_qrect.cpp
index b3fc8b0759..1b11673bd1 100644
--- a/tests/auto/corelib/tools/qrect/tst_qrect.cpp
+++ b/tests/auto/corelib/tools/qrect/tst_qrect.cpp
@@ -41,6 +41,7 @@
#include <QtTest/QtTest>
#include <qrect.h>
+#include <qmargins.h>
#include <limits.h>
#include <qdebug.h>
@@ -133,6 +134,7 @@ private slots:
void newMoveTopLeft();
void newMoveBottomRight_data();
void newMoveBottomRight();
+ void margins();
void translate_data();
void translate();
@@ -3484,6 +3486,25 @@ void tst_QRect::newMoveBottomRight()
QCOMPARE(r,nr);
}
+void tst_QRect::margins()
+{
+ const QRect rectangle = QRect(QPoint(10, 10), QSize(50 ,50));
+ const QMargins margins = QMargins(2, 3, 4, 5);
+
+ const QRect added = rectangle + margins;
+ QCOMPARE(added, QRect(QPoint(8, 7), QSize(56, 58)));
+ QCOMPARE(added, margins + rectangle);
+ QCOMPARE(added, rectangle.marginsAdded(margins));
+
+ QRect a = rectangle;
+ a += margins;
+ QCOMPARE(added, a);
+
+ a = rectangle;
+ a -= margins;
+ QCOMPARE(a, QRect(QPoint(12, 13), QSize(44, 42)));
+ QCOMPARE(a, rectangle.marginsRemoved(margins));
+}
void tst_QRect::translate_data()
{
diff --git a/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp b/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp
index 7073805db4..909725f4b8 100644
--- a/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp
+++ b/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Giuseppe D'Angelo <dangelog@gmail.com>.
+** Copyright (C) 2013 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the test suite of the Qt Toolkit.
@@ -126,8 +127,6 @@ bool operator!=(const Match &m, const QRegularExpressionMatch &rem)
bool operator==(const QRegularExpressionMatchIterator &iterator, const QList<Match> &expectedMatchList)
{
QRegularExpressionMatchIterator i = iterator;
- if (i.isValid() != (!expectedMatchList.isEmpty()))
- return false;
foreach (const Match &expectedMatch, expectedMatchList)
{
@@ -293,6 +292,31 @@ void tst_QRegularExpression::provideRegularExpressions()
| QRegularExpression::InvertedGreedinessOption);
}
+void tst_QRegularExpression::defaultConstructors()
+{
+ QRegularExpression re;
+ QCOMPARE(re.pattern(), QString());
+ QCOMPARE(re.patternOptions(), QRegularExpression::NoPatternOption);
+
+ QRegularExpressionMatch match;
+ QCOMPARE(match.regularExpression(), QRegularExpression());
+ QCOMPARE(match.regularExpression(), re);
+ QCOMPARE(match.matchType(), QRegularExpression::NoMatch);
+ QCOMPARE(match.matchOptions(), QRegularExpression::NoMatchOption);
+ QCOMPARE(match.hasMatch(), false);
+ QCOMPARE(match.hasPartialMatch(), false);
+ QCOMPARE(match.isValid(), true);
+ QCOMPARE(match.lastCapturedIndex(), -1);
+
+ QRegularExpressionMatchIterator iterator;
+ QCOMPARE(iterator.regularExpression(), QRegularExpression());
+ QCOMPARE(iterator.regularExpression(), re);
+ QCOMPARE(iterator.matchType(), QRegularExpression::NoMatch);
+ QCOMPARE(iterator.matchOptions(), QRegularExpression::NoMatchOption);
+ QCOMPARE(iterator.isValid(), true);
+ QCOMPARE(iterator.hasNext(), false);
+}
+
void tst_QRegularExpression::gettersSetters_data()
{
provideRegularExpressions();
@@ -693,12 +717,31 @@ void tst_QRegularExpression::normalMatch()
QFETCH(QRegularExpression::MatchOptions, matchOptions);
QFETCH(Match, match);
- QRegularExpressionMatch m = regexp.match(subject, offset, QRegularExpression::NormalMatch, matchOptions);
- consistencyCheck(m);
- QVERIFY(m == match);
+ {
+ QRegularExpressionMatch m = regexp.match(subject, offset, QRegularExpression::NormalMatch, matchOptions);
+ consistencyCheck(m);
+ QVERIFY(m == match);
+ QCOMPARE(m.regularExpression(), regexp);
+ QCOMPARE(m.matchType(), QRegularExpression::NormalMatch);
+ QCOMPARE(m.matchOptions(), matchOptions);
+ }
+ {
+ // ignore the expected results provided by the match object --
+ // we'll never get any result when testing the NoMatch type.
+ // Just check the validity of the match here.
+ Match realMatch;
+ realMatch.clear();
+ realMatch.isValid = match.isValid;
+
+ QRegularExpressionMatch m = regexp.match(subject, offset, QRegularExpression::NoMatch, matchOptions);
+ consistencyCheck(m);
+ QVERIFY(m == realMatch);
+ QCOMPARE(m.regularExpression(), regexp);
+ QCOMPARE(m.matchType(), QRegularExpression::NoMatch);
+ QCOMPARE(m.matchOptions(), matchOptions);
+ }
}
-
void tst_QRegularExpression::partialMatch_data()
{
QTest::addColumn<QRegularExpression>("regexp");
@@ -952,9 +995,29 @@ void tst_QRegularExpression::partialMatch()
QFETCH(QRegularExpression::MatchOptions, matchOptions);
QFETCH(Match, match);
- QRegularExpressionMatch m = regexp.match(subject, offset, matchType, matchOptions);
- consistencyCheck(m);
- QVERIFY(m == match);
+ {
+ QRegularExpressionMatch m = regexp.match(subject, offset, matchType, matchOptions);
+ consistencyCheck(m);
+ QVERIFY(m == match);
+ QCOMPARE(m.regularExpression(), regexp);
+ QCOMPARE(m.matchType(), matchType);
+ QCOMPARE(m.matchOptions(), matchOptions);
+ }
+ {
+ // ignore the expected results provided by the match object --
+ // we'll never get any result when testing the NoMatch type.
+ // Just check the validity of the match here.
+ Match realMatch;
+ realMatch.clear();
+ realMatch.isValid = match.isValid;
+
+ QRegularExpressionMatch m = regexp.match(subject, offset, QRegularExpression::NoMatch, matchOptions);
+ consistencyCheck(m);
+ QVERIFY(m == realMatch);
+ QCOMPARE(m.regularExpression(), regexp);
+ QCOMPARE(m.matchType(), QRegularExpression::NoMatch);
+ QCOMPARE(m.matchOptions(), matchOptions);
+ }
}
void tst_QRegularExpression::globalMatch_data()
@@ -1223,10 +1286,28 @@ void tst_QRegularExpression::globalMatch()
QFETCH(QRegularExpression::MatchType, matchType);
QFETCH(QRegularExpression::MatchOptions, matchOptions);
QFETCH(QList<Match>, matchList);
+ {
+ QRegularExpressionMatchIterator iterator = regexp.globalMatch(subject, offset, matchType, matchOptions);
+ consistencyCheck(iterator);
+ QVERIFY(iterator == matchList);
+ QCOMPARE(iterator.regularExpression(), regexp);
+ QCOMPARE(iterator.matchType(), matchType);
+ QCOMPARE(iterator.matchOptions(), matchOptions);
+ }
+ {
+ // ignore the expected results provided by the match object --
+ // we'll never get any result when testing the NoMatch type.
+ // Just check the validity of the match here.
+ QList<Match> realMatchList;
+
+ QRegularExpressionMatchIterator iterator = regexp.globalMatch(subject, offset, QRegularExpression::NoMatch, matchOptions);
+ consistencyCheck(iterator);
+ QVERIFY(iterator == realMatchList);
+ QCOMPARE(iterator.regularExpression(), regexp);
+ QCOMPARE(iterator.matchType(), QRegularExpression::NoMatch);
+ QCOMPARE(iterator.matchOptions(), matchOptions);
+ }
- QRegularExpressionMatchIterator iterator = regexp.globalMatch(subject, offset, matchType, matchOptions);
- consistencyCheck(iterator);
- QVERIFY(iterator == matchList);
}
void tst_QRegularExpression::serialize_data()
@@ -1338,6 +1419,86 @@ void tst_QRegularExpression::captureCount()
QCOMPARE(re.captureCount(), -1);
}
+// the comma in the template breaks QFETCH...
+typedef QMultiHash<QString, int> StringToIntMap;
+Q_DECLARE_METATYPE(StringToIntMap)
+
+void tst_QRegularExpression::captureNames_data()
+{
+ QTest::addColumn<QString>("pattern");
+ QTest::addColumn<StringToIntMap>("namedCapturesIndexMap");
+ StringToIntMap map;
+
+ QTest::newRow("captureNames01") << "a pattern" << map;
+ QTest::newRow("captureNames02") << "a.*pattern" << map;
+ QTest::newRow("captureNames03") << "(a) pattern" << map;
+ QTest::newRow("captureNames04") << "(a).*(pattern)" << map;
+
+ map.clear();
+ map.replace("named", 1);
+ QTest::newRow("captureNames05") << "a.*(?<named>pattern)" << map;
+
+ map.clear();
+ map.replace("named", 2);
+ QTest::newRow("captureNames06") << "(a).*(?<named>pattern)" << map;
+
+ map.clear();
+ map.replace("name1", 1);
+ map.replace("name2", 2);
+ QTest::newRow("captureNames07") << "(?<name1>a).*(?<name2>pattern)" << map;
+
+ map.clear();
+ map.replace("name1", 2);
+ map.replace("name2", 1);
+ QTest::newRow("captureNames08") << "(?<name2>a).*(?<name1>pattern)" << map;
+
+ map.clear();
+ map.replace("date", 1);
+ map.replace("month", 2);
+ map.replace("year", 3);
+ QTest::newRow("captureNames09") << "^(?<date>\\d\\d)/(?<month>\\d\\d)/(?<year>\\d\\d\\d\\d)$" << map;
+
+ map.clear();
+ map.replace("date", 2);
+ map.replace("month", 1);
+ map.replace("year", 3);
+ QTest::newRow("captureNames10") << "^(?<month>\\d\\d)/(?<date>\\d\\d)/(?<year>\\d\\d\\d\\d)$" << map;
+
+ map.clear();
+ map.replace("noun", 2);
+ QTest::newRow("captureNames11") << "(a)(?|(?<noun>b)|(?<noun>c))(d)" << map;
+
+ map.clear();
+ QTest::newRow("captureNames_invalid01") << "(.*" << map;
+ QTest::newRow("captureNames_invalid02") << "\\" << map;
+ QTest::newRow("captureNames_invalid03") << "(?<noun)" << map;
+ QTest::newRow("captureNames_invalid04") << "(?|(?<noun1>a)|(?<noun2>b))" << map;
+}
+
+void tst_QRegularExpression::captureNames()
+{
+ QFETCH(QString, pattern);
+ QFETCH(StringToIntMap, namedCapturesIndexMap);
+
+ const QRegularExpression re(pattern);
+ QStringList namedCaptureGroups = re.namedCaptureGroups();
+ int namedCaptureGroupsCount = namedCaptureGroups.size();
+
+ QCOMPARE(namedCaptureGroupsCount, re.captureCount() + 1);
+
+ for (int i = 0; i < namedCaptureGroupsCount; ++i) {
+ const QString &name = namedCaptureGroups.at(i);
+
+ if (name.isEmpty()) {
+ QVERIFY(!namedCapturesIndexMap.contains(name));
+ } else {
+ QVERIFY(namedCapturesIndexMap.contains(name));
+ QCOMPARE(i, namedCapturesIndexMap.value(name));
+ }
+ }
+
+}
+
void tst_QRegularExpression::pcreJitStackUsage_data()
{
QTest::addColumn<QString>("pattern");
@@ -1389,3 +1550,35 @@ void tst_QRegularExpression::regularExpressionMatch()
QTest::ignoreMessage(QtWarningMsg, "QRegularExpressionMatch::captured: empty capturing group name passed");
QCOMPARE(match.captured(QString()).isNull(), true);
}
+
+void tst_QRegularExpression::JOptionUsage_data()
+{
+ QTest::addColumn<QString>("pattern");
+ QTest::addColumn<bool>("isValid");
+ QTest::addColumn<bool>("JOptionUsed");
+
+ QTest::newRow("joption-notused-01") << "a.*b" << true << false;
+ QTest::newRow("joption-notused-02") << "^a(b)(c)$" << true << false;
+ QTest::newRow("joption-notused-03") << "a(b)(?<c>d)|e" << true << false;
+ QTest::newRow("joption-notused-04") << "(?<a>.)(?<a>.)" << false << false;
+
+ QTest::newRow("joption-used-01") << "(?J)a.*b" << true << true;
+ QTest::newRow("joption-used-02") << "(?-J)a.*b" << true << true;
+ QTest::newRow("joption-used-03") << "(?J)(?<a>.)(?<a>.)" << true << true;
+ QTest::newRow("joption-used-04") << "(?-J)(?<a>.)(?<a>.)" << false << true;
+
+}
+
+void tst_QRegularExpression::JOptionUsage()
+{
+ QFETCH(QString, pattern);
+ QFETCH(bool, isValid);
+ QFETCH(bool, JOptionUsed);
+
+ const QString warningMessage = QStringLiteral("QRegularExpressionPrivate::getPatternInfo(): the pattern '%1'\n is using the (?J) option; duplicate capturing group names are not supported by Qt");
+
+ QRegularExpression re(pattern);
+ if (isValid && JOptionUsed)
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(warningMessage.arg(pattern)));
+ QCOMPARE(re.isValid(), isValid);
+}
diff --git a/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.h b/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.h
index d6f9312411..0f62570114 100644
--- a/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.h
+++ b/tests/auto/corelib/tools/qregularexpression/tst_qregularexpression.h
@@ -51,6 +51,7 @@ class tst_QRegularExpression : public QObject
Q_OBJECT
private slots:
+ void defaultConstructors();
void gettersSetters_data();
void gettersSetters();
void escape_data();
@@ -71,10 +72,14 @@ private slots:
void operatoreq();
void captureCount_data();
void captureCount();
+ void captureNames_data();
+ void captureNames();
void pcreJitStackUsage_data();
void pcreJitStackUsage();
void regularExpressionMatch_data();
void regularExpressionMatch();
+ void JOptionUsage_data();
+ void JOptionUsage();
private:
void provideRegularExpressions();
diff --git a/tests/auto/corelib/tools/qset/tst_qset.cpp b/tests/auto/corelib/tools/qset/tst_qset.cpp
index a3232d05c3..eaa1c018ba 100644
--- a/tests/auto/corelib/tools/qset/tst_qset.cpp
+++ b/tests/auto/corelib/tools/qset/tst_qset.cpp
@@ -79,6 +79,7 @@ private slots:
void javaIterator();
void javaMutableIterator();
void makeSureTheComfortFunctionsCompile();
+ void initializerList();
};
void tst_QSet::operator_eq()
@@ -918,6 +919,27 @@ void tst_QSet::makeSureTheComfortFunctionsCompile()
set1 = set2 - set3;
}
+void tst_QSet::initializerList()
+{
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ QSet<int> set{1, 2, 3, 4, 5};
+ QCOMPARE(set.count(), 5);
+ QVERIFY(set.contains(1));
+ QVERIFY(set.contains(2));
+ QVERIFY(set.contains(3));
+ QVERIFY(set.contains(4));
+ QVERIFY(set.contains(5));
+
+ QSet<int> emptySet{};
+ QVERIFY(emptySet.isEmpty());
+
+ QSet<int> set3{{}, {}, {}};
+ QVERIFY(!set3.isEmpty());
+#else
+ QSKIP("Compiler doesn't support initializer lists");
+#endif
+}
+
QTEST_APPLESS_MAIN(tst_QSet)
#include "tst_qset.moc"
diff --git a/tests/auto/corelib/tools/qsharedpointer/externaltests.pri b/tests/auto/corelib/tools/qsharedpointer/externaltests.pri
index 10d30e3c76..b3a01f7990 100644
--- a/tests/auto/corelib/tools/qsharedpointer/externaltests.pri
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.pri
@@ -4,4 +4,4 @@ cleanedQMAKESPEC = $$replace(QMAKESPEC, \\\\, /)
DEFINES += DEFAULT_MAKESPEC=\\\"$$cleanedQMAKESPEC\\\"
cross_compile:DEFINES += QTEST_NO_RTTI QTEST_CROSS_COMPILED
-wince*:DEFINES += QTEST_CROSS_COMPILED QTEST_NO_RTTI
+wince*:DEFINES += QTEST_CROSS_COMPILED QTEST_NO_RTTI
diff --git a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
index 8e10b757c8..5b1a2cf076 100644
--- a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
@@ -97,6 +97,7 @@ private slots:
void lambdaCustomDeleter();
#endif
void creating();
+ void creatingVariadic();
void creatingQObject();
void mixTrackingPointerCode();
void reentrancyWhileDestructing();
@@ -176,6 +177,49 @@ public:
int Data::generationCounter = 0;
int Data::destructorCounter = 0;
+struct NoDefaultConstructor1
+{
+ int i;
+ NoDefaultConstructor1(int i) : i(i) {}
+ NoDefaultConstructor1(uint j) : i(j + 42) {}
+};
+
+struct NoDefaultConstructorRef1
+{
+ int &i;
+ NoDefaultConstructorRef1(int &i) : i(i) {}
+};
+
+struct NoDefaultConstructor2
+{
+ void *ptr;
+ int i;
+ NoDefaultConstructor2(void *ptr, int i) : ptr(ptr), i(i) {}
+};
+
+struct NoDefaultConstructorRef2
+{
+ QString str;
+ int i;
+ NoDefaultConstructorRef2(QString &str, int i) : str(str), i(i) {}
+};
+
+struct NoDefaultConstructorConstRef2
+{
+ QString str;
+ int i;
+ NoDefaultConstructorConstRef2(const QString &str, int i) : str(str), i(i) {}
+ NoDefaultConstructorConstRef2(const QByteArray &ba, int i = 42) : str(QString::fromLatin1(ba)), i(i) {}
+};
+
+#ifdef Q_COMPILER_RVALUE_REFS
+struct NoDefaultConstructorRRef1
+{
+ int &i;
+ NoDefaultConstructorRRef1(int &&i) : i(i) {}
+};
+#endif
+
void tst_QSharedPointer::basics_data()
{
QTest::addColumn<bool>("isNull");
@@ -1436,6 +1480,82 @@ void tst_QSharedPointer::creating()
safetyCheck();
}
+void tst_QSharedPointer::creatingVariadic()
+{
+#if !defined(Q_COMPILER_RVALUE_REFS) || !defined(Q_COMPILER_VARIADIC_TEMPLATES)
+ QSKIP("This compiler is not in C++11 mode or it doesn't support rvalue refs and variadic templates");
+#else
+ int i = 42;
+
+ {
+ NoDefaultConstructor1(1); // control check
+ QSharedPointer<NoDefaultConstructor1> ptr = QSharedPointer<NoDefaultConstructor1>::create(1);
+ QCOMPARE(ptr->i, 1);
+
+ NoDefaultConstructor1(0u); // control check
+ ptr = QSharedPointer<NoDefaultConstructor1>::create(0u);
+ QCOMPARE(ptr->i, 42);
+
+ NoDefaultConstructor1 x(i); // control check
+ ptr = QSharedPointer<NoDefaultConstructor1>::create(i);
+ QCOMPARE(ptr->i, i);
+ }
+ {
+ NoDefaultConstructor2((void*)0, 1); // control check
+ QSharedPointer<NoDefaultConstructor2> ptr = QSharedPointer<NoDefaultConstructor2>::create((void*)0, 1);
+ QCOMPARE(ptr->i, 1);
+ QCOMPARE(ptr->ptr, (void*)0);
+
+ int *null = 0;
+ NoDefaultConstructor2(null, 2); // control check
+ ptr = QSharedPointer<NoDefaultConstructor2>::create(null, 2);
+ QCOMPARE(ptr->i, 2);
+ QCOMPARE(ptr->ptr, (void*)0);
+
+#ifdef Q_COMPILER_NULLPTR
+ NoDefaultConstructor2(nullptr, 3); // control check
+ ptr = QSharedPointer<NoDefaultConstructor2>::create(nullptr, 3);
+ QCOMPARE(ptr->i, 3);
+ QCOMPARE(ptr->ptr, (void*)nullptr);
+#endif
+ }
+ {
+ NoDefaultConstructorRef1 x(i); // control check
+ QSharedPointer<NoDefaultConstructorRef1> ptr = QSharedPointer<NoDefaultConstructorRef1>::create(i);
+ QCOMPARE(ptr->i, i);
+ QCOMPARE(&ptr->i, &i);
+ }
+ {
+ NoDefaultConstructorRRef1(1); // control check
+ QSharedPointer<NoDefaultConstructorRRef1> ptr = QSharedPointer<NoDefaultConstructorRRef1>::create(1);
+ QCOMPARE(ptr->i, 1);
+
+ NoDefaultConstructorRRef1(std::move(i)); // control check
+ ptr = QSharedPointer<NoDefaultConstructorRRef1>::create(std::move(i));
+ QCOMPARE(ptr->i, i);
+ }
+ {
+ QString text("Hello, World");
+ NoDefaultConstructorRef2(text, 1); // control check
+ QSharedPointer<NoDefaultConstructorRef2> ptr = QSharedPointer<NoDefaultConstructorRef2>::create(text, 1);
+ QCOMPARE(ptr->str, text);
+ QCOMPARE(ptr->i, 1);
+ }
+ {
+ QSharedPointer<NoDefaultConstructorConstRef2> ptr;
+ NoDefaultConstructorConstRef2(QLatin1String("string"), 1); // control check
+ ptr = QSharedPointer<NoDefaultConstructorConstRef2>::create(QLatin1String("string"), 1);
+ QCOMPARE(ptr->str, QString("string"));
+ QCOMPARE(ptr->i, 1);
+
+ NoDefaultConstructorConstRef2(QByteArray("bytearray")); // control check
+ ptr = QSharedPointer<NoDefaultConstructorConstRef2>::create(QByteArray("bytearray"));
+ QCOMPARE(ptr->str, QString("bytearray"));
+ QCOMPARE(ptr->i, 42);
+ }
+#endif
+}
+
void tst_QSharedPointer::creatingQObject()
{
{
@@ -1876,7 +1996,7 @@ void tst_QSharedPointer::invalidConstructs()
QByteArray body = code.toLatin1();
bool result = (test.*testFunction)(body);
- if (qgetenv("QTEST_EXTERNAL_DEBUG").toInt() > 0) {
+ if (!result || qgetenv("QTEST_EXTERNAL_DEBUG").toInt() > 0) {
qDebug("External test output:");
#ifdef Q_CC_MSVC
// MSVC prints errors to stdout
diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
index 8e30a66d6f..aa61885a47 100644
--- a/tests/auto/corelib/tools/qstring/tst_qstring.cpp
+++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
@@ -195,6 +195,8 @@ private slots:
void stringRef_local8Bit();
void fromLatin1();
void fromAscii();
+ void fromUcs4();
+ void toUcs4();
void arg();
void number();
void arg_fillChar_data();
@@ -238,7 +240,7 @@ private slots:
#ifdef QT_USE_ICU
void toUpperLower_icu();
#endif
-#if defined(QT_UNICODE_LITERAL) && (defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU))
+#if !defined(QT_NO_UNICODE_LITERAL) && defined(Q_COMPILER_LAMBDA)
void literals();
#endif
void eightBitLiterals_data();
@@ -1003,10 +1005,12 @@ void tst_QString::sprintf()
a.sprintf("%s%n%s", "hello", &n1, "goodbye");
QCOMPARE(n1, 5);
QCOMPARE(a, QString("hellogoodbye"));
+#ifndef Q_CC_MINGW // does not know %ll
qlonglong n2;
a.sprintf("%s%s%lln%s", "foo", "bar", &n2, "whiz");
QCOMPARE((int)n2, 6);
QCOMPARE(a, QString("foobarwhiz"));
+#endif
}
/*
@@ -1425,6 +1429,55 @@ void tst_QString::contains()
QVERIFY(a.contains(QRegularExpression("[FG][HI]")));
QVERIFY(a.contains(QRegularExpression("[G][HE]")));
+ {
+ QRegularExpressionMatch match;
+ QVERIFY(!match.hasMatch());
+
+ QVERIFY(a.contains(QRegularExpression("[FG][HI]"), &match));
+ QVERIFY(match.hasMatch());
+ QCOMPARE(match.capturedStart(), 6);
+ QCOMPARE(match.capturedEnd(), 8);
+ QCOMPARE(match.captured(), QStringLiteral("GH"));
+
+ QVERIFY(a.contains(QRegularExpression("[G][HE]"), &match));
+ QVERIFY(match.hasMatch());
+ QCOMPARE(match.capturedStart(), 6);
+ QCOMPARE(match.capturedEnd(), 8);
+ QCOMPARE(match.captured(), QStringLiteral("GH"));
+
+ QVERIFY(a.contains(QRegularExpression("[f](.*)[FG]"), &match));
+ QVERIFY(match.hasMatch());
+ QCOMPARE(match.capturedStart(), 10);
+ QCOMPARE(match.capturedEnd(), 15);
+ QCOMPARE(match.captured(), QString("fGEFG"));
+ QCOMPARE(match.capturedStart(1), 11);
+ QCOMPARE(match.capturedEnd(1), 14);
+ QCOMPARE(match.captured(1), QStringLiteral("GEF"));
+
+ QVERIFY(a.contains(QRegularExpression("[f](.*)[F]"), &match));
+ QVERIFY(match.hasMatch());
+ QCOMPARE(match.capturedStart(), 10);
+ QCOMPARE(match.capturedEnd(), 14);
+ QCOMPARE(match.captured(), QString("fGEF"));
+ QCOMPARE(match.capturedStart(1), 11);
+ QCOMPARE(match.capturedEnd(1), 13);
+ QCOMPARE(match.captured(1), QStringLiteral("GE"));
+
+ QVERIFY(!a.contains(QRegularExpression("ZZZ"), &match));
+ // doesn't match, but ensure match didn't change
+ QVERIFY(match.hasMatch());
+ QCOMPARE(match.capturedStart(), 10);
+ QCOMPARE(match.capturedEnd(), 14);
+ QCOMPARE(match.captured(), QStringLiteral("fGEF"));
+ QCOMPARE(match.capturedStart(1), 11);
+ QCOMPARE(match.capturedEnd(1), 13);
+ QCOMPARE(match.captured(1), QStringLiteral("GE"));
+
+ // don't crash with a null pointer
+ QVERIFY(a.contains(QRegularExpression("[FG][HI]"), 0));
+ QVERIFY(!a.contains(QRegularExpression("ZZZ"), 0));
+ }
+
CREATE_REF(QLatin1String("FG"));
QVERIFY(a.contains(ref));
QVERIFY(a.contains(ref, Qt::CaseInsensitive));
@@ -3880,6 +3933,52 @@ void tst_QString::fromAscii()
QVERIFY(a.size() == 5);
}
+void tst_QString::fromUcs4()
+{
+ QString s;
+ s = QString::fromUcs4( 0 );
+ QVERIFY( s.isNull() );
+ QCOMPARE( s.size(), 0 );
+ s = QString::fromUcs4( 0, 0 );
+ QVERIFY( s.isNull() );
+ QCOMPARE( s.size(), 0 );
+ s = QString::fromUcs4( 0, 5 );
+ QVERIFY( s.isNull() );
+ QCOMPARE( s.size(), 0 );
+
+ uint nil = '\0';
+ s = QString::fromUcs4( &nil );
+ QVERIFY( !s.isNull() );
+ QCOMPARE( s.size(), 0 );
+ s = QString::fromUcs4( &nil, 0 );
+ QVERIFY( !s.isNull() );
+ QCOMPARE( s.size(), 0 );
+
+ uint bmp = 'a';
+ s = QString::fromUcs4( &bmp, 1 );
+ QVERIFY( !s.isNull() );
+ QCOMPARE( s.size(), 1 );
+
+ uint smp = 0x10000;
+ s = QString::fromUcs4( &smp, 1 );
+ QVERIFY( !s.isNull() );
+ QCOMPARE( s.size(), 2 );
+}
+
+void tst_QString::toUcs4()
+{
+ QString s;
+ QCOMPARE( s.toUcs4().size(), 0 );
+
+ QChar bmp = QLatin1Char('a');
+ s = QString(&bmp, 1);
+ QCOMPARE( s.toUcs4().size(), 1 );
+
+ QChar smp[] = { QChar::highSurrogate(0x10000), QChar::lowSurrogate(0x10000) };
+ s = QString(smp, 2);
+ QCOMPARE( s.toUcs4().size(), 1 );
+}
+
void tst_QString::arg()
{
/*
@@ -5187,6 +5286,9 @@ void tst_QString::QCharRefDetaching() const
void tst_QString::sprintfZU() const
{
+#ifdef Q_CC_MINGW
+ QSKIP("MinGW does not support '%zu'.");
+#else
{
QString string;
size_t s = 6;
@@ -5215,6 +5317,7 @@ void tst_QString::sprintfZU() const
string.sprintf("%zu %s\n", s, "foo");
QCOMPARE(string, QString::fromLatin1("6 foo\n"));
}
+#endif // !Q_CC_MINGW
}
void tst_QString::repeatedSignature() const
@@ -5382,7 +5485,7 @@ void tst_QString::toUpperLower_icu()
}
#endif
-#if defined(QT_UNICODE_LITERAL) && (defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU))
+#if !defined(QT_NO_UNICODE_LITERAL) && defined(Q_COMPILER_LAMBDA)
// Only tested on c++0x compliant compiler or gcc
void tst_QString::literals()
{
diff --git a/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
index 66f40e05cb..1045d5929f 100644
--- a/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
+++ b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
@@ -69,6 +69,25 @@ private slots:
void compare_data();
void compare();
void operator_eqeq_nullstring();
+ void toNum();
+ void toDouble_data();
+ void toDouble();
+ void toFloat();
+ void toLong_data();
+ void toLong();
+ void toULong_data();
+ void toULong();
+ void toLongLong();
+ void toULongLong();
+ void toUInt();
+ void toInt();
+ void toShort();
+ void toUShort();
+ void double_conversion_data();
+ void double_conversion();
+ void integer_conversion_data();
+ void integer_conversion();
+ void trimmed();
};
static QStringRef emptyRef()
@@ -840,6 +859,941 @@ void tst_QStringRef::compare()
}
}
+void tst_QStringRef::toNum()
+{
+#define TEST_TO_INT(num, func, type) \
+ a = #num; \
+ b = a.leftRef(-1); \
+ QCOMPARE(b.func(&ok), type(Q_INT64_C(num))); \
+ QVERIFY2(ok, "Failed: num=" #num);
+
+ QString a;
+ QStringRef b;
+ bool ok = false;
+
+ TEST_TO_INT(0, toInt, int)
+ TEST_TO_INT(-1, toInt, int)
+ TEST_TO_INT(1, toInt, int)
+ TEST_TO_INT(2147483647, toInt, int)
+ TEST_TO_INT(-2147483648, toInt, int)
+
+ TEST_TO_INT(0, toShort, short)
+ TEST_TO_INT(-1, toShort, short)
+ TEST_TO_INT(1, toShort, short)
+ TEST_TO_INT(32767, toShort, short)
+ TEST_TO_INT(-32768, toShort, short)
+
+ TEST_TO_INT(0, toLong, long)
+ TEST_TO_INT(-1, toLong, long)
+ TEST_TO_INT(1, toLong, long)
+ TEST_TO_INT(2147483647, toLong, long)
+ TEST_TO_INT(-2147483648, toLong, long)
+ TEST_TO_INT(0, toLongLong, (long long))
+ TEST_TO_INT(-1, toLongLong, (long long))
+ TEST_TO_INT(1, toLongLong, (long long))
+ TEST_TO_INT(9223372036854775807, toLongLong, (long long))
+ TEST_TO_INT(-9223372036854775807, toLongLong, (long long))
+
+#undef TEST_TO_INT
+
+#define TEST_TO_UINT(num, func, type) \
+ a = #num; \
+ b = a.leftRef(-1); \
+ QCOMPARE(b.func(&ok), type(Q_UINT64_C(num))); \
+ QVERIFY2(ok, "Failed: num=" #num);
+
+ TEST_TO_UINT(0, toUInt, (unsigned int))
+ TEST_TO_UINT(1, toUInt, (unsigned int))
+ TEST_TO_UINT(4294967295, toUInt, (unsigned int))
+
+ TEST_TO_UINT(0, toUShort, (unsigned short))
+ TEST_TO_UINT(1, toUShort, (unsigned short))
+ TEST_TO_UINT(65535, toUShort, (unsigned short))
+
+ TEST_TO_UINT(0, toULong, (unsigned long))
+ TEST_TO_UINT(1, toULong, (unsigned long))
+ TEST_TO_UINT(4294967295, toULong, (unsigned long))
+
+ TEST_TO_UINT(0, toULongLong, (unsigned long long))
+ TEST_TO_UINT(1, toULongLong, (unsigned long long))
+ TEST_TO_UINT(18446744073709551615, toULongLong, (unsigned long long))
+
+#undef TEST_TO_UINT
+
+#define TEST_BASE(str, base, num) \
+ a = str; \
+ b = a.leftRef(-1); \
+ QCOMPARE(b.toInt(&ok,base), int(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= " #base " num=" #num ", func=toInt"); \
+ QCOMPARE(b.toUInt(&ok, base), (unsigned int)(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= " #base " num=" #num ", func=toUInt"); \
+ QCOMPARE(b.toShort(&ok, base), short(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= " #base " num=" #num ", func=toShort"); \
+ QCOMPARE(b.toUShort(&ok, base), (unsigned short)(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= " #base " num=" #num ", func=toUShort"); \
+ QCOMPARE(b.toLong(&ok, base), long(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= " #base " num=" #num ", func=toLong"); \
+ QCOMPARE(b.toULong(&ok, base), (unsigned long)(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= " #base " num=" #num ", func=toULong"); \
+ QCOMPARE(b.toLongLong(&ok, base), (long long)(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= " #base " num=" #num ", func=toLongLong"); \
+ QCOMPARE(b.toULongLong(&ok, base), (unsigned long long)(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= " #base " num=" #num ", func=toULongLong");
+
+ TEST_BASE("FF", 16, 255)
+ TEST_BASE("0xFF", 16, 255)
+ TEST_BASE("77", 8, 63)
+ TEST_BASE("077", 8, 63)
+
+ TEST_BASE("0xFF", 0, 255)
+ TEST_BASE("077", 0, 63)
+ TEST_BASE("255", 0, 255)
+
+ TEST_BASE(" FF", 16, 255)
+ TEST_BASE(" 0xFF", 16, 255)
+ TEST_BASE(" 77", 8, 63)
+ TEST_BASE(" 077", 8, 63)
+
+ TEST_BASE(" 0xFF", 0, 255)
+ TEST_BASE(" 077", 0, 63)
+ TEST_BASE(" 255", 0, 255)
+
+ TEST_BASE("\tFF\t", 16, 255)
+ TEST_BASE("\t0xFF ", 16, 255)
+ TEST_BASE(" 77 ", 8, 63)
+ TEST_BASE("77 ", 8, 63)
+
+#undef TEST_BASE
+
+#define TEST_NEG_BASE(str, base, num) \
+ a = str; \
+ b = a.leftRef(-1); \
+ QCOMPARE(b.toInt(&ok, base), int(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toInt"); \
+ QCOMPARE(b.toShort(&ok,base), short(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toShort"); \
+ QCOMPARE(b.toLong(&ok, base), long(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLong"); \
+ QCOMPARE(b.toLongLong(&ok, base), (long long)(num)); \
+ QVERIFY2(ok, "Failed: str=" #str " base= "#base " num=" #num ", func=toLongLong");
+
+ TEST_NEG_BASE("-FE", 16, -254)
+ TEST_NEG_BASE("-0xFE", 16, -254)
+ TEST_NEG_BASE("-77", 8, -63)
+ TEST_NEG_BASE("-077", 8, -63)
+
+ TEST_NEG_BASE("-0xFE", 0, -254)
+ TEST_NEG_BASE("-077", 0, -63)
+ TEST_NEG_BASE("-254", 0, -254)
+
+#undef TEST_NEG_BASE
+
+#define TEST_DOUBLE(num, str) \
+ a = str; \
+ b = a.leftRef(-1); \
+ QCOMPARE(b.toDouble(&ok), num); \
+ QVERIFY(ok);
+
+ TEST_DOUBLE(1.2345, "1.2345")
+ TEST_DOUBLE(12.345, "1.2345e+01")
+ TEST_DOUBLE(12.345, "1.2345E+01")
+ TEST_DOUBLE(12345.6, "12345.6")
+
+#undef TEST_DOUBLE
+
+#define TEST_BAD(str, func) \
+ a = str; \
+ b = a.leftRef(-1); \
+ b.func(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str " func=" #func);
+
+ TEST_BAD("32768", toShort)
+ TEST_BAD("-32769", toShort)
+ TEST_BAD("65536", toUShort)
+ TEST_BAD("2147483648", toInt)
+ TEST_BAD("-2147483649", toInt)
+ TEST_BAD("4294967296", toUInt)
+ if (sizeof(long) == 4) {
+ TEST_BAD("2147483648", toLong)
+ TEST_BAD("-2147483649", toLong)
+ TEST_BAD("4294967296", toULong)
+ }
+ TEST_BAD("9223372036854775808", toLongLong)
+ TEST_BAD("-9223372036854775809", toLongLong)
+ TEST_BAD("18446744073709551616", toULongLong)
+ TEST_BAD("-1", toUShort)
+ TEST_BAD("-1", toUInt)
+ TEST_BAD("-1", toULong)
+ TEST_BAD("-1", toULongLong)
+
+#undef TEST_BAD
+
+#define TEST_BAD_ALL(str) \
+ a = str; \
+ b = a.leftRef(-1); \
+ b.toShort(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toUShort(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toInt(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toUInt(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toULong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toLongLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toULongLong(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toFloat(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str); \
+ b.toDouble(&ok); \
+ QVERIFY2(!ok, "Failed: str=" #str);
+
+ TEST_BAD_ALL((const char*)0);
+ TEST_BAD_ALL("");
+ TEST_BAD_ALL(" ");
+ TEST_BAD_ALL(".");
+ TEST_BAD_ALL("-");
+ TEST_BAD_ALL("hello");
+ TEST_BAD_ALL("1.2.3");
+ TEST_BAD_ALL("0x0x0x");
+ TEST_BAD_ALL("123-^~<");
+ TEST_BAD_ALL("123ThisIsNotANumber");
+
+#undef TEST_BAD_ALL
+
+ a = "FF";
+ b = a.leftRef(-1);
+ b.toULongLong(&ok, 10);
+ QVERIFY(!ok);
+
+ a = "FF";
+ b = a.leftRef(-1);
+ b.toULongLong(&ok, 0);
+ QVERIFY(!ok);
+
+#ifdef QT_NO_FPU
+ double d = 3.40282346638528e+38; // slightly off FLT_MAX when using hardfloats
+#else
+ double d = 3.4028234663852886e+38; // FLT_MAX
+#endif
+ QString::number(d, 'e', 17).leftRef(-1).toFloat(&ok);
+ QVERIFY(ok);
+ QString::number(d + 1e32, 'e', 17).leftRef(-1).toFloat(&ok);
+ QVERIFY(!ok);
+ a = QString::number(-d, 'e', 17).leftRef(-1).toFloat(&ok);
+ QVERIFY(ok);
+ QString::number(-d - 1e32, 'e', 17).leftRef(-1).toFloat(&ok);
+ QVERIFY(!ok);
+ QString::number(d + 1e32, 'e', 17).leftRef(-1).toDouble(&ok);
+ QVERIFY(ok);
+ QString::number(-d - 1e32, 'e', 17).leftRef(-1).toDouble(&ok);
+ QVERIFY(ok);
+}
+
+void tst_QStringRef::toUShort()
+{
+ QString a;
+ QStringRef b;
+ bool ok;
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "COMPARE";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "123";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(123));
+ QCOMPARE(b.toUShort(&ok), ushort(123));
+ QVERIFY(ok);
+
+ a = "123A";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "1234567";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "aaa123aaa";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "aaa123";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "123aaa";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "32767";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(32767));
+ QCOMPARE(b.toUShort(&ok), ushort(32767));
+ QVERIFY(ok);
+
+ a = "-32767";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "65535";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(65535));
+ QCOMPARE(b.toUShort(&ok), ushort(65535));
+ QVERIFY(ok);
+
+ if (sizeof(short) == 2) {
+ a = "65536";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+
+ a = "123456";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUShort(), ushort(0));
+ QCOMPARE(b.toUShort(&ok), ushort(0));
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QStringRef::toShort()
+{
+ QString a;
+ QStringRef b;
+ bool ok;
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "COMPARE";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "123";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(123));
+ QCOMPARE(b.toShort(&ok), short(123));
+ QVERIFY(ok);
+
+ a = "123A";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "1234567";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "aaa123aaa";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "aaa123";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "123aaa";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "32767";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(32767));
+ QCOMPARE(b.toShort(&ok), short(32767));
+ QVERIFY(ok);
+
+ a = "-32767";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(-32767));
+ QCOMPARE(b.toShort(&ok), short(-32767));
+ QVERIFY(ok);
+
+ a = "-32768";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(-32768));
+ QCOMPARE(b.toShort(&ok), short(-32768));
+ QVERIFY(ok);
+
+ if (sizeof(short) == 2) {
+ a = "32768";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+
+ a = "-32769";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toShort(), short(0));
+ QCOMPARE(b.toShort(&ok), short(0));
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QStringRef::toInt()
+{
+ QString a;
+ QStringRef b;
+ bool ok;
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "COMPARE";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "123";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 123);
+ QCOMPARE(b.toInt(&ok), 123);
+ QVERIFY(ok);
+
+ a = "123A";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "1234567";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 1234567);
+ QCOMPARE(b.toInt(&ok), 1234567);
+ QVERIFY(ok);
+
+ a = "12345678901234";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "3234567890";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "aaa12345aaa";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "aaa12345";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "12345aaa";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "2147483647"; // 2**31 - 1
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 2147483647);
+ QCOMPARE(b.toInt(&ok), 2147483647);
+ QVERIFY(ok);
+
+ if (sizeof(int) == 4) {
+ a = "-2147483647"; // -(2**31 - 1)
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), -2147483647);
+ QCOMPARE(b.toInt(&ok), -2147483647);
+ QVERIFY(ok);
+
+ a = "2147483648"; // 2**31
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+
+ a = "-2147483648"; // -2**31
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), -2147483647 - 1);
+ QCOMPARE(b.toInt(&ok), -2147483647 - 1);
+ QVERIFY(ok);
+
+ a = "2147483649"; // 2**31 + 1
+ b = a.leftRef(-1);
+ QCOMPARE(b.toInt(), 0);
+ QCOMPARE(b.toInt(&ok), 0);
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QStringRef::toUInt()
+{
+ bool ok;
+ QString a;
+ QStringRef b;
+ a = "3234567890";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUInt(&ok), 3234567890u);
+ QVERIFY(ok);
+
+ a = "-50";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUInt(), 0u);
+ QCOMPARE(b.toUInt(&ok), 0u);
+ QVERIFY(!ok);
+
+ a = "4294967295"; // 2**32 - 1
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUInt(), 4294967295u);
+ QCOMPARE(b.toUInt(&ok), 4294967295u);
+ QVERIFY(ok);
+
+ if (sizeof(int) == 4) {
+ a = "4294967296"; // 2**32
+ b = a.leftRef(-1);
+ QCOMPARE(b.toUInt(), 0u);
+ QCOMPARE(b.toUInt(&ok), 0u);
+ QVERIFY(!ok);
+ }
+}
+
+///////////////////////////// to*Long //////////////////////////////////////
+
+void tst_QStringRef::toULong_data()
+{
+ QTest::addColumn<QString>("str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<ulong>("result");
+ QTest::addColumn<bool>("ok");
+
+ QTest::newRow("default") << QString() << 10 << 0UL << false;
+ QTest::newRow("empty") << QString("") << 10 << 0UL << false;
+ QTest::newRow("ulong1") << QString("3234567890") << 10 << 3234567890UL << true;
+ QTest::newRow("ulong2") << QString("fFFfFfFf") << 16 << 0xFFFFFFFFUL << true;
+}
+
+void tst_QStringRef::toULong()
+{
+ QFETCH(QString, str);
+ QFETCH(int, base);
+ QFETCH(ulong, result);
+ QFETCH(bool, ok);
+ QStringRef strRef = str.leftRef(-1);
+
+ bool b;
+ QCOMPARE(strRef.toULong(0, base), result);
+ QCOMPARE(strRef.toULong(&b, base), result);
+ QCOMPARE(b, ok);
+}
+
+void tst_QStringRef::toLong_data()
+{
+ QTest::addColumn<QString>("str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<long>("result");
+ QTest::addColumn<bool>("ok");
+
+ QTest::newRow("default") << QString() << 10 << 0L << false;
+ QTest::newRow("empty") << QString("") << 10 << 0L << false;
+ QTest::newRow("normal") << QString("7fFFfFFf") << 16 << 0x7fFFfFFfL << true;
+ QTest::newRow("long_max") << QString("2147483647") << 10 << 2147483647L << true;
+ if (sizeof(long) == 4) {
+ QTest::newRow("long_max+1") << QString("2147483648") << 10 << 0L << false;
+ QTest::newRow("long_min-1") << QString("-80000001") << 16 << 0L << false;
+ }
+ QTest::newRow("negative") << QString("-7fffffff") << 16 << -0x7fffffffL << true;
+// QTest::newRow("long_min") << QString("-80000000") << 16 << 0x80000000uL << true;
+}
+
+void tst_QStringRef::toLong()
+{
+ QFETCH(QString, str);
+ QFETCH(int, base);
+ QFETCH(long, result);
+ QFETCH(bool, ok);
+ QStringRef strRef = str.leftRef(-1);
+
+ bool b;
+ QCOMPARE(strRef.toLong(0, base), result);
+ QCOMPARE(strRef.toLong(&b, base), result);
+ QCOMPARE(b, ok);
+}
+
+
+////////////////////////// to*LongLong //////////////////////////////////////
+
+void tst_QStringRef::toULongLong()
+{
+ QString str;
+ QStringRef strRef;
+ bool ok;
+ str = "18446744073709551615"; // ULLONG_MAX
+ strRef = str.leftRef(-1);
+ QCOMPARE(strRef.toULongLong(0), Q_UINT64_C(18446744073709551615));
+ QCOMPARE(strRef.toULongLong(&ok), Q_UINT64_C(18446744073709551615));
+ QVERIFY(ok);
+
+ str = "18446744073709551616"; // ULLONG_MAX + 1
+ strRef = str.leftRef(-1);
+ QCOMPARE(strRef.toULongLong(0), Q_UINT64_C(0));
+ QCOMPARE(strRef.toULongLong(&ok), Q_UINT64_C(0));
+ QVERIFY(!ok);
+
+ str = "-150";
+ strRef = str.leftRef(-1);
+ QCOMPARE(strRef.toULongLong(0), Q_UINT64_C(0));
+ QCOMPARE(strRef.toULongLong(&ok), Q_UINT64_C(0));
+ QVERIFY(!ok);
+}
+
+void tst_QStringRef::toLongLong()
+{
+ QString str;
+ QStringRef strRef;
+ bool ok;
+
+ str = "9223372036854775807"; // LLONG_MAX
+ strRef = str.leftRef(-1);
+ QCOMPARE(strRef.toLongLong(0), Q_INT64_C(9223372036854775807));
+ QCOMPARE(strRef.toLongLong(&ok), Q_INT64_C(9223372036854775807));
+ QVERIFY(ok);
+
+ str = "-9223372036854775808"; // LLONG_MIN
+ strRef = str.leftRef(-1);
+ QCOMPARE(strRef.toLongLong(0),
+ -Q_INT64_C(9223372036854775807) - Q_INT64_C(1));
+ QCOMPARE(strRef.toLongLong(&ok),
+ -Q_INT64_C(9223372036854775807) - Q_INT64_C(1));
+ QVERIFY(ok);
+
+ str = "aaaa9223372036854775807aaaa";
+ strRef = str.leftRef(-1);
+ QCOMPARE(strRef.toLongLong(0), Q_INT64_C(0));
+ QCOMPARE(strRef.toLongLong(&ok), Q_INT64_C(0));
+ QVERIFY(!ok);
+
+ str = "9223372036854775807aaaa";
+ strRef = str.leftRef(-1);
+ QCOMPARE(strRef.toLongLong(0), Q_INT64_C(0));
+ QCOMPARE(strRef.toLongLong(&ok), Q_INT64_C(0));
+ QVERIFY(!ok);
+
+ str = "aaaa9223372036854775807";
+ strRef = str.leftRef(-1);
+ QCOMPARE(strRef.toLongLong(0), Q_INT64_C(0));
+ QCOMPARE(strRef.toLongLong(&ok), Q_INT64_C(0));
+ QVERIFY(!ok);
+
+ static char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+ for (int i = 0; i < 36; ++i) {
+ for (int j = 0; j < 36; ++j) {
+ for (int k = 0; k < 36; ++k) {
+ QString str;
+ str += QChar(digits[i]);
+ str += QChar(digits[j]);
+ str += QChar(digits[k]);
+ strRef = str.leftRef(-1);
+ qlonglong value = (((i * 36) + j) * 36) + k;
+ QVERIFY(strRef.toLongLong(0, 36) == value);
+ }
+ }
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////
+
+void tst_QStringRef::toFloat()
+{
+ QString a;
+ QStringRef b;
+ bool ok;
+ a = "0.000000000931322574615478515625";
+ b = a.leftRef(-1);
+ QCOMPARE(b.toFloat(&ok), float(0.000000000931322574615478515625));
+ QVERIFY(ok);
+}
+
+void tst_QStringRef::toDouble_data()
+{
+ QTest::addColumn<QString>("str");
+ QTest::addColumn<double>("result");
+ QTest::addColumn<bool>("result_ok");
+
+ QTest::newRow("ok00") << QString("0.000000000931322574615478515625") << 0.000000000931322574615478515625 << true;
+ QTest::newRow("ok01") << QString(" 123.45") << 123.45 << true;
+
+ QTest::newRow("ok02") << QString("0.1e10") << 0.1e10 << true;
+ QTest::newRow("ok03") << QString("0.1e-10") << 0.1e-10 << true;
+
+ QTest::newRow("ok04") << QString("1e10") << 1.0e10 << true;
+ QTest::newRow("ok05") << QString("1e+10") << 1.0e10 << true;
+ QTest::newRow("ok06") << QString("1e-10") << 1.0e-10 << true;
+
+ QTest::newRow("ok07") << QString(" 1e10") << 1.0e10 << true;
+ QTest::newRow("ok08") << QString(" 1e+10") << 1.0e10 << true;
+ QTest::newRow("ok09") << QString(" 1e-10") << 1.0e-10 << true;
+
+ QTest::newRow("ok10") << QString("1.") << 1.0 << true;
+ QTest::newRow("ok11") << QString(".1") << 0.1 << true;
+
+ QTest::newRow("wrong00") << QString("123.45 ") << 123.45 << true;
+ QTest::newRow("wrong01") << QString(" 123.45 ") << 123.45 << true;
+
+ QTest::newRow("wrong02") << QString("aa123.45aa") << 0.0 << false;
+ QTest::newRow("wrong03") << QString("123.45aa") << 0.0 << false;
+ QTest::newRow("wrong04") << QString("123erf") << 0.0 << false;
+
+ QTest::newRow("wrong05") << QString("abc") << 0.0 << false;
+ QTest::newRow("wrong06") << QString() << 0.0 << false;
+ QTest::newRow("wrong07") << QString("") << 0.0 << false;
+}
+
+void tst_QStringRef::toDouble()
+{
+ QFETCH(QString, str);
+ QFETCH(bool, result_ok);
+ QStringRef strRef = str.leftRef(-1);
+ bool ok;
+ double d = strRef.toDouble(&ok);
+ if (result_ok) {
+ QTEST(d, "result");
+ QVERIFY(ok);
+ } else {
+ QVERIFY(!ok);
+ }
+}
+
+void tst_QStringRef::integer_conversion_data()
+{
+ QTest::addColumn<QString>("num_str");
+ QTest::addColumn<int>("base");
+ QTest::addColumn<bool>("good");
+ QTest::addColumn<qlonglong>("num");
+
+ QTest::newRow("C empty 0") << QString("") << 0 << false << (qlonglong)0;
+ QTest::newRow("C empty 8") << QString("") << 8 << false << (qlonglong)0;
+ QTest::newRow("C empty 10") << QString("") << 10 << false << (qlonglong)0;
+ QTest::newRow("C empty 16") << QString("") << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C null 0") << QString() << 0 << false << (qlonglong)0;
+ QTest::newRow("C null 8") << QString() << 8 << false << (qlonglong)0;
+ QTest::newRow("C null 10") << QString() << 10 << false << (qlonglong)0;
+ QTest::newRow("C null 16") << QString() << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C -0xf 0") << QString(" -0xf") << 0 << true << (qlonglong)-15;
+ QTest::newRow("C -0xf 0") << QString("-0xf ") << 0 << true << (qlonglong)-15;
+ QTest::newRow("C \t0xf\t 0") << QString("\t0xf\t") << 0 << true << (qlonglong)15;
+ QTest::newRow("C -010 0") << QString(" -010") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C 010 0") << QString("010 ") << 0 << true << (qlonglong)8;
+ QTest::newRow("C \t-010\t 0") << QString("\t-010\t") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C 123 10") << QString(" 123") << 10 << true << (qlonglong)123;
+ QTest::newRow("C 123 10") << QString("123 ") << 10 << true << (qlonglong)123;
+ QTest::newRow("C \t123\t 10") << QString("\t123\t") << 10 << true << (qlonglong)123;
+ QTest::newRow("C -0xf 16") << QString(" -0xf") << 16 << true << (qlonglong)-15;
+ QTest::newRow("C -0xf 16") << QString("-0xf ") << 16 << true << (qlonglong)-15;
+ QTest::newRow("C \t0xf\t 16") << QString("\t0xf\t") << 16 << true << (qlonglong)15;
+
+ QTest::newRow("C -0 0") << QString("-0") << 0 << true << (qlonglong)0;
+ QTest::newRow("C -0 8") << QString("-0") << 8 << true << (qlonglong)0;
+ QTest::newRow("C -0 10") << QString("-0") << 10 << true << (qlonglong)0;
+ QTest::newRow("C -0 16") << QString("-0") << 16 << true << (qlonglong)0;
+
+ QTest::newRow("C 1.234 10") << QString("1.234") << 10 << false << (qlonglong)0;
+ QTest::newRow("C 1,234 10") << QString("1,234") << 10 << false << (qlonglong)0;
+
+ QTest::newRow("C 0x 0") << QString("0x") << 0 << false << (qlonglong)0;
+ QTest::newRow("C 0x 16") << QString("0x") << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C 10 0") << QString("10") << 0 << true << (qlonglong)10;
+ QTest::newRow("C 010 0") << QString("010") << 0 << true << (qlonglong)8;
+ QTest::newRow("C 0x10 0") << QString("0x10") << 0 << true << (qlonglong)16;
+ QTest::newRow("C 10 8") << QString("10") << 8 << true << (qlonglong)8;
+ QTest::newRow("C 010 8") << QString("010") << 8 << true << (qlonglong)8;
+ QTest::newRow("C 0x10 8") << QString("0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("C 10 10") << QString("10") << 10 << true << (qlonglong)10;
+ QTest::newRow("C 010 10") << QString("010") << 10 << true << (qlonglong)10;
+ QTest::newRow("C 0x10 10") << QString("0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("C 10 16") << QString("10") << 16 << true << (qlonglong)16;
+ QTest::newRow("C 010 16") << QString("010") << 16 << true << (qlonglong)16;
+ QTest::newRow("C 0x10 16") << QString("0x10") << 16 << true << (qlonglong)16;
+
+ QTest::newRow("C -10 0") << QString("-10") << 0 << true << (qlonglong)-10;
+ QTest::newRow("C -010 0") << QString("-010") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C -0x10 0") << QString("-0x10") << 0 << true << (qlonglong)-16;
+ QTest::newRow("C -10 8") << QString("-10") << 8 << true << (qlonglong)-8;
+ QTest::newRow("C -010 8") << QString("-010") << 8 << true << (qlonglong)-8;
+ QTest::newRow("C -0x10 8") << QString("-0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("C -10 10") << QString("-10") << 10 << true << (qlonglong)-10;
+ QTest::newRow("C -010 10") << QString("-010") << 10 << true << (qlonglong)-10;
+ QTest::newRow("C -0x10 10") << QString("-0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("C -10 16") << QString("-10") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C -010 16") << QString("-010") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C -0x10 16") << QString("-0x10") << 16 << true << (qlonglong)-16;
+
+ // Let's try some Arabic
+ const quint16 arabic_str[] = { 0x0661, 0x0662, 0x0663, 0x0664, 0x0000 }; // "1234"
+ QTest::newRow("ar_SA 1234 0") << QString::fromUtf16(arabic_str) << 0 << false << (qlonglong)0;
+}
+
+void tst_QStringRef::integer_conversion()
+{
+ QFETCH(QString, num_str);
+ QFETCH(int, base);
+ QFETCH(bool, good);
+ QFETCH(qlonglong, num);
+ QStringRef num_strRef = num_str.leftRef(-1);
+
+ bool ok;
+ qlonglong d = num_strRef.toLongLong(&ok, base);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ QCOMPARE(d, num);
+ }
+}
+
+void tst_QStringRef::double_conversion_data()
+{
+ QTest::addColumn<QString>("num_str");
+ QTest::addColumn<bool>("good");
+ QTest::addColumn<double>("num");
+
+ // The good...
+
+ QTest::newRow("C 1") << QString("1") << true << 1.0;
+ QTest::newRow("C 1.0") << QString("1.0") << true << 1.0;
+ QTest::newRow("C 1.234") << QString("1.234") << true << 1.234;
+ QTest::newRow("C 1.234e-10") << QString("1.234e-10") << true << 1.234e-10;
+ QTest::newRow("C 1.234E10") << QString("1.234E10") << true << 1.234e10;
+ QTest::newRow("C 1e10") << QString("1e10") << true << 1.0e10;
+
+ // The bad...
+
+ QTest::newRow("C empty") << QString("") << false << 0.0;
+ QTest::newRow("C null") << QString() << false << 0.0;
+ QTest::newRow("C .") << QString(".") << false << 0.0;
+ QTest::newRow("C 1e") << QString("1e") << false << 0.0;
+ QTest::newRow("C 1,") << QString("1,") << false << 0.0;
+ QTest::newRow("C 1,0") << QString("1,0") << false << 0.0;
+ QTest::newRow("C 1,000") << QString("1,000") << false << 0.0;
+ QTest::newRow("C 1e1.0") << QString("1e1.0") << false << 0.0;
+ QTest::newRow("C 1e+") << QString("1e+") << false << 0.0;
+ QTest::newRow("C 1e-") << QString("1e-") << false << 0.0;
+ QTest::newRow("de_DE 1,0") << QString("1,0") << false << 0.0;
+ QTest::newRow("de_DE 1,234") << QString("1,234") << false << 0.0;
+ QTest::newRow("de_DE 1,234e-10") << QString("1,234e-10") << false << 0.0;
+ QTest::newRow("de_DE 1,234E10") << QString("1,234E10") << false << 0.0;
+
+ // And the ugly...
+
+ QTest::newRow("C .1") << QString(".1") << true << 0.1;
+ QTest::newRow("C -.1") << QString("-.1") << true << -0.1;
+ QTest::newRow("C 1.") << QString("1.") << true << 1.0;
+ QTest::newRow("C 1.E10") << QString("1.E10") << true << 1.0e10;
+ QTest::newRow("C 1e+10") << QString("1e+10") << true << 1.0e+10;
+ QTest::newRow("C 1") << QString(" 1") << true << 1.0;
+ QTest::newRow("C 1 ") << QString("1 ") << true << 1.0;
+
+ // Let's try some Arabic
+ const quint16 arabic_str[] = { 0x0660, 0x066B, 0x0661, 0x0662,
+ 0x0663, 0x0664, 0x0065, 0x0662,
+ 0x0000 }; // "0.1234e2"
+ QTest::newRow("ar_SA") << QString::fromUtf16(arabic_str) << false << 0.0;
+}
+
+void tst_QStringRef::double_conversion()
+{
+#define MY_DOUBLE_EPSILON (2.22045e-16)
+
+ QFETCH(QString, num_str);
+ QFETCH(bool, good);
+ QFETCH(double, num);
+ QStringRef num_strRef = num_str.leftRef(-1);
+
+ bool ok;
+ double d = num_strRef.toDouble(&ok);
+ QCOMPARE(ok, good);
+
+ if (ok) {
+ double diff = d - num;
+ if (diff < 0)
+ diff = -diff;
+ QVERIFY(diff <= MY_DOUBLE_EPSILON);
+ }
+}
+
+void tst_QStringRef::trimmed()
+{
+ QString a;
+ QStringRef b;
+ a = "Text";
+ b = a.leftRef(-1);
+ QCOMPARE(b.compare(QStringLiteral("Text")), 0);
+ QCOMPARE(b.trimmed().compare(QStringLiteral("Text")), 0);
+ a = " ";
+ b = a.leftRef(-1);
+ QCOMPARE(b.compare(QStringLiteral(" ")), 0);
+ QCOMPARE(b.trimmed().compare(QStringLiteral("")), 0);
+ a = " a ";
+ b = a.leftRef(-1);
+ QCOMPARE(b.trimmed().compare(QStringLiteral("a")), 0);
+ a = "Text a ";
+ b = a.midRef(4);
+ QCOMPARE(b.compare(QStringLiteral(" a ")), 0);
+ QCOMPARE(b.trimmed().compare(QStringLiteral("a")), 0);
+}
+
QTEST_APPLESS_MAIN(tst_QStringRef)
#include "tst_qstringref.moc"
diff --git a/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp b/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
index 4d05f45252..e6629301f9 100644
--- a/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
+++ b/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
@@ -69,6 +69,7 @@ private slots:
void stateInFinishedSignal();
void resume();
void restart();
+ void setPaused();
protected slots:
void finishedSlot();
@@ -681,6 +682,28 @@ void tst_QTimeLine::restart()
QCOMPARE(timeLine.currentTime(), 0);
}
+void tst_QTimeLine::setPaused()
+{
+ QTimeLine timeLine(1000);
+ {
+ QCOMPARE(timeLine.currentTime(), 0);
+ timeLine.start();
+ QTest::qWait(250);
+ timeLine.setPaused(true);
+ int oldCurrentTime = timeLine.currentTime();
+ QVERIFY(oldCurrentTime > 0);
+ QVERIFY(oldCurrentTime < 1000);
+ QTest::qWait(1000);
+ timeLine.setPaused(false);
+ QTest::qWait(250);
+ int currentTime = timeLine.currentTime();
+ QVERIFY(currentTime > 0);
+ QVERIFY(currentTime > oldCurrentTime);
+ QVERIFY(currentTime < 1000);
+ timeLine.stop();
+ }
+}
+
QTEST_MAIN(tst_QTimeLine)
#include "tst_qtimeline.moc"
diff --git a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
index bda3a2596f..c19080e345 100644
--- a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
+++ b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
@@ -58,6 +58,7 @@ private slots:
void count();
void first();
void last();
+ void squeeze();
};
int fooCtor = 0;
@@ -653,5 +654,28 @@ void tst_QVarLengthArray::last()
QCOMPARE(list.length(), 1);
}
+void tst_QVarLengthArray::squeeze()
+{
+ QVarLengthArray<int> list;
+ int sizeOnStack = list.capacity();
+ int sizeOnHeap = sizeOnStack * 2;
+ list.resize(0);
+ QCOMPARE(list.capacity(), sizeOnStack);
+ list.resize(sizeOnHeap);
+ QCOMPARE(list.capacity(), sizeOnHeap);
+ list.resize(sizeOnStack);
+ QCOMPARE(list.capacity(), sizeOnHeap);
+ list.resize(0);
+ QCOMPARE(list.capacity(), sizeOnHeap);
+ list.squeeze();
+ QCOMPARE(list.capacity(), sizeOnStack);
+ list.resize(sizeOnStack);
+ list.squeeze();
+ QCOMPARE(list.capacity(), sizeOnStack);
+ list.resize(sizeOnHeap);
+ list.squeeze();
+ QCOMPARE(list.capacity(), sizeOnHeap);
+}
+
QTEST_APPLESS_MAIN(tst_QVarLengthArray)
#include "tst_qvarlengtharray.moc"
diff --git a/tests/auto/corelib/tools/qvector/tst_qvector.cpp b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
index 7738a2c797..53caec4a64 100644
--- a/tests/auto/corelib/tools/qvector/tst_qvector.cpp
+++ b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
@@ -236,6 +236,7 @@ private slots:
void removeInt() const;
void removeMovable() const;
void removeCustom() const;
+ void removeFirstLast() const;
void resizePOD_data() const;
void resizePOD() const;
void resizeComplexMovable_data() const;
@@ -1393,6 +1394,103 @@ void tst_QVector::removeCustom() const
QCOMPARE(instancesCount, Custom::counter.loadAcquire());
}
+struct RemoveLastTestClass
+{
+ RemoveLastTestClass() { other = 0; deleted = false; }
+ RemoveLastTestClass *other;
+ bool deleted;
+ ~RemoveLastTestClass()
+ {
+ deleted = true;
+ if (other)
+ other->other = 0;
+ }
+};
+
+void tst_QVector::removeFirstLast() const
+{
+ // pop_pack - pop_front
+ QVector<int> t, t2;
+ t.append(1);
+ t.append(2);
+ t.append(3);
+ t.append(4);
+ t2 = t;
+ t.pop_front();
+ QCOMPARE(t.size(), 3);
+ QCOMPARE(t.at(0), 2);
+ t.pop_back();
+ QCOMPARE(t.size(), 2);
+ QCOMPARE(t.at(0), 2);
+ QCOMPARE(t.at(1), 3);
+
+ // takefirst - takeLast
+ int n1 = t2.takeLast();
+ QCOMPARE(t2.size(), 3);
+ QCOMPARE(n1, 4);
+ QCOMPARE(t2.at(0), 1);
+ QCOMPARE(t2.at(2), 3);
+ n1 = t2.takeFirst();
+ QCOMPARE(t2.size(), 2);
+ QCOMPARE(n1, 1);
+ QCOMPARE(t2.at(0), 2);
+ QCOMPARE(t2.at(1), 3);
+
+ // remove first
+ QVector<int> x, y;
+ x.append(1);
+ x.append(2);
+ y = x;
+ x.removeFirst();
+ QCOMPARE(x.size(), 1);
+ QCOMPARE(y.size(), 2);
+ QCOMPARE(x.at(0), 2);
+
+ // remove Last
+ QVector<RemoveLastTestClass> v;
+ v.resize(2);
+ v[0].other = &(v[1]);
+ v[1].other = &(v[0]);
+ // Check dtor - complex type
+ QVERIFY(v.at(0).other != 0);
+ v.removeLast();
+ QVERIFY(v.at(0).other == 0);
+ QCOMPARE(v.at(0).deleted, false);
+ // check iterator
+ int count = 0;
+ for (QVector<RemoveLastTestClass>::const_iterator i = v.constBegin(); i != v.constEnd(); ++i) {
+ ++count;
+ QVERIFY(i->other == 0);
+ QCOMPARE(i->deleted, false);
+ }
+ // Check size
+ QCOMPARE(count, 1);
+ QCOMPARE(v.size(), 1);
+ v.removeLast();
+ QCOMPARE(v.size(), 0);
+ // Check if we do correct realloc
+ QVector<int> v2, v3;
+ v2.append(1);
+ v2.append(2);
+ v3 = v2; // shared
+ v2.removeLast();
+ QCOMPARE(v2.size(), 1);
+ QCOMPARE(v3.size(), 2);
+ QCOMPARE(v2.at(0), 1);
+ QCOMPARE(v3.at(0), 1);
+ QCOMPARE(v3.at(1), 2);
+
+ // Remove last with shared
+ QVector<int> z1, z2;
+ z1.append(9);
+ z2 = z1;
+ z1.removeLast();
+ QCOMPARE(z1.size(), 0);
+ QCOMPARE(z2.size(), 1);
+ QCOMPARE(z2.at(0), 9);
+}
+
+
void tst_QVector::resizePOD_data() const
{
QTest::addColumn<QVector<int> >("vector");
diff --git a/tests/auto/corelib/tools/tools.pro b/tests/auto/corelib/tools/tools.pro
index 100409e58b..f8b2437d35 100644
--- a/tests/auto/corelib/tools/tools.pro
+++ b/tests/auto/corelib/tools/tools.pro
@@ -22,6 +22,7 @@ SUBDIRS=\
qlocale \
qmap \
qmargins \
+ qmessageauthenticationcode \
qpair \
qpoint \
qpointf \
diff --git a/tests/auto/corelib/xml/xml.pro b/tests/auto/corelib/xml/xml.pro
index 53836cb7f0..20519edf1b 100644
--- a/tests/auto/corelib/xml/xml.pro
+++ b/tests/auto/corelib/xml/xml.pro
@@ -1,3 +1,3 @@
TEMPLATE=subdirs
-SUBDIRS=\
+qtHaveModule(network): SUBDIRS= \
qxmlstream
diff --git a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
index c28d1dc022..308e12b9ab 100644
--- a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
@@ -159,6 +159,11 @@ private slots:
void followSignal();
+ void connectDisconnect_data();
+ void connectDisconnect();
+ void connectDisconnectPeer_data();
+ void connectDisconnectPeer();
+
void createErrors_data();
void createErrors();
@@ -196,6 +201,15 @@ private:
QProcess proc;
};
+class SignalReceiver : public QObject
+{
+ Q_OBJECT
+public:
+ int callCount;
+ SignalReceiver() : callCount(0) {}
+public slots:
+ void receive() { ++callCount; }
+};
tst_QDBusAbstractInterface::tst_QDBusAbstractInterface()
{
@@ -1017,21 +1031,87 @@ void tst_QDBusAbstractInterface::followSignal()
// now the signal must have been received:
QCOMPARE(s.size(), 1);
QVERIFY(s.at(0).size() == 0);
- s.clear();
- // disconnect the signal
- disconnect(p.data(), SIGNAL(voidSignal()), &QTestEventLoop::instance(), 0);
+ // cleanup:
+ con.interface()->unregisterService(serviceToFollow);
+}
+
+void tst_QDBusAbstractInterface::connectDisconnect_data()
+{
+ QTest::addColumn<int>("connectCount");
+ QTest::addColumn<int>("disconnectCount");
+
+ // we don't actually need multiple disconnects
+ // QObject::disconnect() disconnects all matching rules
+ // we'd have to use QMetaObject::disconnectOne if we wanted just one
+ QTest::newRow("null") << 0 << 0;
+ QTest::newRow("connect-disconnect") << 1 << 1;
+ QTest::newRow("connect-disconnect-wildcard") << 1 << -1;
+ QTest::newRow("connect-twice") << 2 << 0;
+ QTest::newRow("connect-twice-disconnect") << 2 << 1;
+ QTest::newRow("connect-twice-disconnect-wildcard") << 2 << -1;
+}
+
+void tst_QDBusAbstractInterface::connectDisconnect()
+{
+ QFETCH(int, connectCount);
+ QFETCH(int, disconnectCount);
+
+ Pinger p = getPinger();
+ QVERIFY2(p, "Not connected to D-Bus");
+
+ // connect the exitLoop slot first
+ // if the disconnect() below does something weird, we'll get a timeout
+ QTestEventLoop::instance().connect(p.data(), SIGNAL(voidSignal()), SLOT(exitLoop()));
+
+ SignalReceiver sr;
+ for (int i = 0; i < connectCount; ++i)
+ sr.connect(p.data(), SIGNAL(voidSignal()), SLOT(receive()));
+ if (disconnectCount)
+ QObject::disconnect(p.data(), disconnectCount > 0 ? SIGNAL(voidSignal()) : 0, &sr, SLOT(receive()));
- // emit the signal again:
emit targetObj.voidSignal();
QTestEventLoop::instance().enterLoop(2);
QVERIFY(!QTestEventLoop::instance().timeout());
- // and now it mustn't have been received
- QVERIFY(s.isEmpty());
+ if (disconnectCount != 0)
+ QCOMPARE(sr.callCount, 0);
+ else
+ QCOMPARE(sr.callCount, connectCount);
+}
- // cleanup:
- con.interface()->unregisterService(serviceToFollow);
+void tst_QDBusAbstractInterface::connectDisconnectPeer_data()
+{
+ connectDisconnect_data();
+}
+
+void tst_QDBusAbstractInterface::connectDisconnectPeer()
+{
+ QFETCH(int, connectCount);
+ QFETCH(int, disconnectCount);
+
+ Pinger p = getPingerPeer();
+ QVERIFY2(p, "Not connected to D-Bus");
+
+ // connect the exitLoop slot first
+ // if the disconnect() below does something weird, we'll get a timeout
+ QTestEventLoop::instance().connect(p.data(), SIGNAL(voidSignal()), SLOT(exitLoop()));
+
+ SignalReceiver sr;
+ for (int i = 0; i < connectCount; ++i)
+ sr.connect(p.data(), SIGNAL(voidSignal()), SLOT(receive()));
+ if (disconnectCount)
+ QObject::disconnect(p.data(), disconnectCount > 0 ? SIGNAL(voidSignal()) : 0, &sr, SLOT(receive()));
+
+ QDBusMessage req = QDBusMessage::createMethodCall(serviceName, objectPath, interfaceName, "voidSignal");
+ QVERIFY(QDBusConnection::sessionBus().send(req));
+ QTestEventLoop::instance().enterLoop(2);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ if (disconnectCount != 0)
+ QCOMPARE(sr.callCount, 0);
+ else
+ QCOMPARE(sr.callCount, connectCount);
}
void tst_QDBusAbstractInterface::createErrors_data()
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
index c56a47bbc6..1da7f8a92a 100644
--- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
@@ -1200,6 +1200,19 @@ void tst_QDBusConnection::registerVirtualObject()
QVERIFY(!con.registerVirtualObject(path, &obj, QDBusConnection::SubPath));
QCOMPARE(con.objectRegisteredAt(path), static_cast<QObject *>(0));
}
+
+ {
+ // Register object, make sure no SubPath handling object can be registered on a parent path.
+ // (same as above, but deeper)
+ QObject objectAtSubPath;
+ QVERIFY(con.registerObject(childChildPath, &objectAtSubPath));
+ QCOMPARE(con.objectRegisteredAt(childChildPath), static_cast<QObject *>(&objectAtSubPath));
+
+ VirtualObject obj;
+ QVERIFY(!con.registerVirtualObject(path, &obj, QDBusConnection::SubPath));
+ QCOMPARE(con.objectRegisteredAt(path), static_cast<QObject *>(0));
+ }
+
QCOMPARE(con.objectRegisteredAt(path), static_cast<QObject *>(0));
QCOMPARE(con.objectRegisteredAt(childPath), static_cast<QObject *>(0));
QCOMPARE(con.objectRegisteredAt(childChildPath), static_cast<QObject *>(0));
diff --git a/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp b/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp
index 7b7ad1800c..6340f0f7a6 100644
--- a/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp
+++ b/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp
@@ -442,7 +442,7 @@ void tst_QDBusMetaObject::types()
class MethodTest1: public QObject
{
Q_OBJECT
-
+
public slots:
void method() { }
};
@@ -452,7 +452,7 @@ const char MethodTest1_xml[] =
class MethodTest2: public QObject
{
Q_OBJECT
-
+
public slots:
void method(int) { }
};
@@ -462,7 +462,7 @@ const char MethodTest2_xml[] =
class MethodTest3: public QObject
{
Q_OBJECT
-
+
public slots:
void method(int input0) { Q_UNUSED(input0); }
};
@@ -472,7 +472,7 @@ const char MethodTest3_xml[] =
class MethodTest4: public QObject
{
Q_OBJECT
-
+
public slots:
int method() { return 0; }
};
@@ -484,7 +484,7 @@ const char MethodTest4_xml2[] =
class MethodTest5: public QObject
{
Q_OBJECT
-
+
public slots:
int method(int input0) { return input0; }
};
@@ -497,7 +497,7 @@ const char MethodTest5_xml[] =
class MethodTest6: public QObject
{
Q_OBJECT
-
+
public slots:
int method(int input0, int input1) { Q_UNUSED(input0); return input1; }
};
@@ -511,7 +511,7 @@ const char MethodTest6_xml[] =
class MethodTest7: public QObject
{
Q_OBJECT
-
+
public slots:
int method(int input0, int input1, int &output1) { output1 = input1; return input0; }
};
@@ -526,7 +526,7 @@ const char MethodTest7_xml[] =
class MethodTest8: public QObject
{
Q_OBJECT
-
+
public slots:
int method(int input0, int input1, int &output1, int &output2) { output1 = output2 = input1; return input0; }
};
@@ -542,7 +542,7 @@ const char MethodTest8_xml[] =
class MethodTest9: public QObject
{
Q_OBJECT
-
+
public slots:
Q_NOREPLY void method(int) { }
};
@@ -577,7 +577,7 @@ void tst_QDBusMetaObject::methods()
class SignalTest1: public QObject
{
Q_OBJECT
-
+
signals:
void signal();
};
@@ -587,7 +587,7 @@ const char SignalTest1_xml[] =
class SignalTest2: public QObject
{
Q_OBJECT
-
+
signals:
void signal(int);
};
@@ -597,7 +597,7 @@ const char SignalTest2_xml[] =
class SignalTest3: public QObject
{
Q_OBJECT
-
+
signals:
void signal(int output0);
};
@@ -607,7 +607,7 @@ const char SignalTest3_xml[] =
class SignalTest4: public QObject
{
Q_OBJECT
-
+
signals:
void signal(int output0, int);
};
diff --git a/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp b/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp
index 841e09c865..a45a0fefbb 100644
--- a/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp
+++ b/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp
@@ -572,6 +572,8 @@ void tst_QDBusPendingReply::errors()
QVERIFY(rint.isError());
error = rint.error();
VERIFY_ERROR(error);
+ int dummyint = rint;
+ QCOMPARE(dummyint, int());
QDBusPendingReply<int,int> rintint(iface->asyncCall("sendError"));
rintint.waitForFinished();
@@ -579,6 +581,9 @@ void tst_QDBusPendingReply::errors()
QVERIFY(rintint.isError());
error = rintint.error();
VERIFY_ERROR(error);
+ dummyint = rintint;
+ QCOMPARE(dummyint, int());
+ QCOMPARE(rintint.argumentAt<1>(), int());
QDBusPendingReply<QString> rstring(iface->asyncCall("sendError"));
rstring.waitForFinished();
@@ -586,6 +591,8 @@ void tst_QDBusPendingReply::errors()
QVERIFY(rstring.isError());
error = rstring.error();
VERIFY_ERROR(error);
+ QString dummystring = rstring;
+ QCOMPARE(dummystring, QString());
}
QTEST_MAIN(tst_QDBusPendingReply)
diff --git a/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp b/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp
index 5e60e468a2..8b0fa92adf 100644
--- a/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp
+++ b/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp
@@ -97,6 +97,7 @@ private slots:
void simpleTypes();
void complexTypes();
void wrongTypes();
+ void error();
};
class TypesInterface: public QDBusAbstractAdaptor
@@ -372,6 +373,30 @@ void tst_QDBusReply::wrongTypes()
QVERIFY(!rstruct.isValid());
}
+void tst_QDBusReply::error()
+{
+ {
+ // Wrong type
+ QDBusReply<bool> result = iface->call(QDBus::BlockWithGui, "retrieveInt");
+ QVERIFY(result.error().isValid());
+ }
+ {
+ // Wrong type, const version
+ const QDBusReply<bool> result = iface->call(QDBus::BlockWithGui, "retrieveInt");
+ QVERIFY(result.error().isValid());
+ }
+ {
+ // Ok type
+ QDBusReply<void> result = iface->call(QDBus::BlockWithGui, "retrieveInt");
+ QVERIFY(!result.error().isValid());
+ }
+ {
+ // Ok type, const version
+ const QDBusReply<void> result = iface->call(QDBus::BlockWithGui, "retrieveInt");
+ QVERIFY(!result.error().isValid());
+ }
+}
+
QTEST_MAIN(tst_QDBusReply)
#include "tst_qdbusreply.moc"
diff --git a/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp b/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp
index 08b8ce3db3..8c94f87fd6 100644
--- a/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp
+++ b/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp
@@ -96,7 +96,7 @@ void tst_QDBusXmlParser::parsing_data()
QTest::newRow("null") << QString() << 0 << 0 << 0 << introspection;
QTest::newRow("empty") << QString("") << 0 << 0 << 0 << introspection;
-
+
QTest::newRow("junk") << "<junk/>" << 0 << 0 << 0 << introspection;
QTest::newRow("interface-inside-junk") << "<junk><interface name=\"iface.iface1\" /></junk>"
<< 0 << 0 << 0 << introspection;
@@ -429,7 +429,7 @@ void tst_QDBusXmlParser::signals__data()
QTest::newRow("one-out-no-direction") <<
"<signal name=\"Signal\">"
"<arg type=\"s\"/>"
- "</signal>" << map;
+ "</signal>" << map;
// two args with name
signal.outputArgs << arg("i", "bar");
diff --git a/tests/auto/gui/image/image.pro b/tests/auto/gui/image/image.pro
index 1ef52df4ba..9199763c40 100644
--- a/tests/auto/gui/image/image.pro
+++ b/tests/auto/gui/image/image.pro
@@ -11,6 +11,9 @@ SUBDIRS=\
qpicture \
qicon \
+!qtHaveModule(network): SUBDIRS -= \
+ qimagereader
+
!contains(QT_CONFIG, private_tests): SUBDIRS -= \
qpixmapcache \
diff --git a/tests/auto/gui/image/qicon/tst_qicon.cpp b/tests/auto/gui/image/qicon/tst_qicon.cpp
index 11fd5f9b2e..c21f725b55 100644
--- a/tests/auto/gui/image/qicon/tst_qicon.cpp
+++ b/tests/auto/gui/image/qicon/tst_qicon.cpp
@@ -80,7 +80,7 @@ private:
const static QIcon staticIcon;
};
-// Creating an icon statically should not cause a crash.
+// Creating an icon statically should not cause a crash.
// But we do not officially support this. See QTBUG-8666
const QIcon tst_QIcon::staticIcon = QIcon::fromTheme("edit-find");
diff --git a/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp b/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp
index d76e954ccd..f7d8eef721 100644
--- a/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp
+++ b/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp
@@ -63,7 +63,7 @@ class MyImageIOHandler : public QImageIOHandler
{
public:
MyImageIOHandler() : QImageIOHandler() { }
- bool canRead() const { return true; }
+ bool canRead() const { return true; }
bool read(QImage *) { return true; }
};
diff --git a/tests/auto/gui/image/qimagereader/images/black.xpm b/tests/auto/gui/image/qimagereader/images/black.xpm
index d7925bf211..4a1f4ec861 100644
--- a/tests/auto/gui/image/qimagereader/images/black.xpm
+++ b/tests/auto/gui/image/qimagereader/images/black.xpm
@@ -15,21 +15,21 @@ static char * ddd_xpm[] = {
"+ c white m white g white g4 white s Light ",
"* c DarkGreen m black g grey25 g4 grey25 s Eye ",
/* Pixels */
-" . . ",
-" . .. ",
-" . . ",
-" .. . ",
-" .. .. .. ",
-" .. . . . ",
-" . . . . .. ",
-" . .X. . ",
-" . *.X.* .. ",
-" .. .. .XXX. .. ... ",
-" . .X...XXX...X. . ",
-" .. ..XXX.XXX.XXX. .. ",
-" .....XXXX...XXXX. . ",
-" .. ..XXXXXXXXX.. .. ",
-" ...XXXXXXX..... ",
+" . . ",
+" . .. ",
+" . . ",
+" .. . ",
+" .. .. .. ",
+" .. . . . ",
+" . . . . .. ",
+" . .X. . ",
+" . *.X.* .. ",
+" .. .. .XXX. .. ... ",
+" . .X...XXX...X. . ",
+" .. ..XXX.XXX.XXX. .. ",
+" .....XXXX...XXXX. . ",
+" .. ..XXXXXXXXX.. .. ",
+" ...XXXXXXX..... ",
" ......... ",
" .XXXXXXX. ",
" .....XXX..... ",
diff --git a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp
index 4b3db26685..b684231e10 100644
--- a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp
@@ -94,6 +94,7 @@ private slots:
void multiWordNamedColorXPM();
void supportedFormats();
+ void supportedMimeTypes();
void readFromDevice_data();
void readFromDevice();
@@ -571,6 +572,26 @@ void tst_QImageReader::supportedFormats()
QCOMPARE(formatSet.size(), formats.size());
}
+void tst_QImageReader::supportedMimeTypes()
+{
+ QList<QByteArray> mimeTypes = QImageReader::supportedMimeTypes();
+ QList<QByteArray> sortedMimeTypes = mimeTypes;
+ qSort(sortedMimeTypes);
+
+ // check that the list is sorted
+ QCOMPARE(mimeTypes, sortedMimeTypes);
+
+ QSet<QByteArray> mimeTypeSet;
+ foreach (QByteArray mimeType, mimeTypes)
+ mimeTypeSet << mimeType;
+
+ // check the list as a minimum contains image/bmp
+ QVERIFY(mimeTypeSet.contains("image/bmp"));
+
+ // check that the list does not contain duplicates
+ QCOMPARE(mimeTypeSet.size(), mimeTypes.size());
+}
+
void tst_QImageReader::setBackgroundColor_data()
{
QTest::addColumn<QString>("fileName");
diff --git a/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp b/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
index 3c36482d62..f1d0e227f6 100644
--- a/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
+++ b/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
@@ -81,6 +81,7 @@ private slots:
void writeImage2_data();
void writeImage2();
void supportedFormats();
+ void supportedMimeTypes();
void writeToInvalidDevice();
@@ -352,6 +353,26 @@ void tst_QImageWriter::supportedFormats()
QCOMPARE(formatSet.size(), formats.size());
}
+void tst_QImageWriter::supportedMimeTypes()
+{
+ QList<QByteArray> mimeTypes = QImageWriter::supportedMimeTypes();
+ QList<QByteArray> sortedMimeTypes = mimeTypes;
+ qSort(sortedMimeTypes);
+
+ // check that the list is sorted
+ QCOMPARE(mimeTypes, sortedMimeTypes);
+
+ QSet<QByteArray> mimeTypeSet;
+ foreach (QByteArray mimeType, mimeTypes)
+ mimeTypeSet << mimeType;
+
+ // check the list as a minimum contains image/bmp
+ QVERIFY(mimeTypeSet.contains("image/bmp"));
+
+ // check that the list does not contain duplicates
+ QCOMPARE(mimeTypeSet.size(), mimeTypes.size());
+}
+
void tst_QImageWriter::writeToInvalidDevice()
{
QLatin1String fileName("/these/directories/do/not/exist/001.png");
diff --git a/tests/auto/gui/image/qpicture/tst_qpicture.cpp b/tests/auto/gui/image/qpicture/tst_qpicture.cpp
index 3e628981b6..2e766c5bf5 100644
--- a/tests/auto/gui/image/qpicture/tst_qpicture.cpp
+++ b/tests/auto/gui/image/qpicture/tst_qpicture.cpp
@@ -174,28 +174,28 @@ void tst_QPicture::operator_lt_lt()
{
// streaming of null pictures
{
- QPicture pic1, pic2;
- QByteArray ba( 100, 0 );
- QDataStream str1( &ba, QIODevice::WriteOnly );
- str1 << pic1;
- QDataStream str2( &ba, QIODevice::ReadOnly );
- str2 >> pic2;
- QVERIFY( pic2.isNull() );
+ QPicture pic1, pic2;
+ QByteArray ba( 100, 0 );
+ QDataStream str1( &ba, QIODevice::WriteOnly );
+ str1 << pic1;
+ QDataStream str2( &ba, QIODevice::ReadOnly );
+ str2 >> pic2;
+ QVERIFY( pic2.isNull() );
}
// picture with a simple line, checking bitwise equality
{
- QPicture pic1, pic2;
- QPainter p( &pic1 );
- p.drawLine( 10, 20, 30, 40 );
- p.end();
- QByteArray ba( 10 * pic1.size(), 0 );
- QDataStream str1( &ba, QIODevice::WriteOnly );
- str1 << pic1;
- QDataStream str2( &ba, QIODevice::ReadOnly );
- str2 >> pic2;
- QCOMPARE( pic1.size(), pic2.size() );
- QVERIFY( memcmp( pic1.data(), pic2.data(), pic1.size() ) == 0 );
+ QPicture pic1, pic2;
+ QPainter p( &pic1 );
+ p.drawLine( 10, 20, 30, 40 );
+ p.end();
+ QByteArray ba( 10 * pic1.size(), 0 );
+ QDataStream str1( &ba, QIODevice::WriteOnly );
+ str1 << pic1;
+ QDataStream str2( &ba, QIODevice::ReadOnly );
+ str2 >> pic2;
+ QCOMPARE( pic1.size(), pic2.size() );
+ QVERIFY( memcmp( pic1.data(), pic2.data(), pic1.size() ) == 0 );
}
}
@@ -268,7 +268,6 @@ void tst_QPicture::boundaryValues_data()
QTest::newRow("min x, max y") << INT_MIN << INT_MAX;
QTest::newRow("max x, min y") << INT_MAX << INT_MIN;
-
}
void tst_QPicture::boundaryValues()
@@ -283,8 +282,6 @@ void tst_QPicture::boundaryValues()
painter.drawPoint(QPoint(x, y));
painter.end();
-
-
}
diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
index 61f53a5073..531ec68fdc 100644
--- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
@@ -114,6 +114,7 @@ private slots:
void convertFromImageNoDetach();
void convertFromImageDetach();
+ void convertFromImageCacheKey();
#if defined(Q_OS_WIN)
void toWinHBITMAP_data();
@@ -782,6 +783,28 @@ void tst_QPixmap::convertFromImageDetach()
QVERIFY(copy.isDetached());
}
+void tst_QPixmap::convertFromImageCacheKey()
+{
+ QPixmap randomPixmap(10, 10);
+ if (randomPixmap.handle()->classId() != QPlatformPixmap::RasterClass)
+ QSKIP("Test only valid for raster pixmaps");
+
+ //first get the screen format
+ QImage::Format screenFormat = randomPixmap.toImage().format();
+ QVERIFY(screenFormat != QImage::Format_Invalid);
+
+ QImage orig(100,100, screenFormat);
+ orig.fill(0);
+
+ QPixmap pix = QPixmap::fromImage(orig);
+ QImage copy = pix.toImage();
+
+ QVERIFY(copy.format() == screenFormat);
+
+ QCOMPARE(orig.cacheKey(), pix.cacheKey());
+ QCOMPARE(copy.cacheKey(), pix.cacheKey());
+}
+
#if defined(Q_OS_WIN)
QT_BEGIN_NAMESPACE
diff --git a/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp b/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp
index 649bc071b9..5406256c9f 100644
--- a/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp
+++ b/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp
@@ -187,7 +187,7 @@ void tst_QStandardItem::getSetData()
item.setBackground(backgroundColor);
QCOMPARE(item.background().color(), backgroundColor);
- QColor textColor((i == i) ? Qt::green : Qt::cyan);
+ QColor textColor((i == 1) ? Qt::green : Qt::cyan);
item.setForeground(textColor);
QCOMPARE(item.foreground().color(), textColor);
diff --git a/tests/auto/gui/kernel/kernel.pro b/tests/auto/gui/kernel/kernel.pro
index 7e3f25d377..85a81de632 100644
--- a/tests/auto/gui/kernel/kernel.pro
+++ b/tests/auto/gui/kernel/kernel.pro
@@ -15,6 +15,7 @@ SUBDIRS=\
qmouseevent_modal \
qpalette \
qscreen \
+ qsurfaceformat \
qtouchevent \
qwindow \
qguiapplication \
diff --git a/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
index a2ee14db45..a6134de497 100644
--- a/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
@@ -133,6 +133,10 @@ private slots:
void parseString();
void fromString_data();
void fromString();
+ void listToString_data();
+ void listToString();
+ void listFromString_data();
+ void listFromString();
#ifdef QT_BUILD_INTERNAL
void ensureSorted();
#endif
@@ -631,6 +635,104 @@ void tst_QKeySequence::fromString()
QCOMPARE(ks4, ks1);
}
+void tst_QKeySequence::listToString_data()
+{
+ QTest::addColumn<QString>("strSequences");
+ QTest::addColumn<QList<QKeySequence> >("sequences");
+
+ QList<QKeySequence> sequences;
+
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("Ctrl+Left; Meta+A") << "Ctrl+Left; Meta+A" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Semicolon)
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("Ctrl+;; Meta+A") << "Ctrl+;; Meta+A" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::Key_Semicolon)
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow(";; Meta+A") << ";; Meta+A" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence(Qt::META + Qt::Key_Semicolon);
+ QTest::newRow("Ctrl+Left; Meta+;") << "Ctrl+Left; Meta+;" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence();
+ QTest::newRow("Ctrl+Left; ") << "Ctrl+Left; " << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence()
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("Ctrl+Left; ; Meta+A") << "Ctrl+Left; ; Meta+A" << sequences;
+}
+
+void tst_QKeySequence::listToString()
+{
+ QFETCH(QList<QKeySequence>, sequences);
+ QFETCH(QString, strSequences);
+
+ QCOMPARE(QKeySequence::listToString(sequences), strSequences);
+}
+
+void tst_QKeySequence::listFromString_data()
+{
+ QTest::addColumn<QString>("strSequences");
+ QTest::addColumn<QList<QKeySequence> >("sequences");
+
+ QList<QKeySequence> sequences;
+
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("Ctrl+Left; Meta+A") << "Ctrl+Left; Meta+A" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Semicolon)
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("Ctrl+;; Meta+A") << "Ctrl+;; Meta+A" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::Key_Semicolon)
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow(";; Meta+A") << ";; Meta+A" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence(Qt::META + Qt::Key_Semicolon);
+ QTest::newRow("Ctrl+Left; Meta+;") << "Ctrl+Left; Meta+;" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence();
+ QTest::newRow("Ctrl+Left; ") << "Ctrl+Left; " << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence()
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("Ctrl+Left; ; Meta+A") << "Ctrl+Left; ; Meta+A" << sequences;
+
+ sequences.clear();
+ sequences << QKeySequence(Qt::CTRL + Qt::Key_Left)
+ << QKeySequence(Qt::Key_unknown)
+ << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("Ctrl+Left; 4+3=2; Meta+A") << "Ctrl+Left; 4+3=2; Meta+A" << sequences;
+}
+
+void tst_QKeySequence::listFromString()
+{
+ QFETCH(QList<QKeySequence>, sequences);
+ QFETCH(QString, strSequences);
+
+ QCOMPARE(QKeySequence::listFromString(strSequences), sequences);
+}
+
#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
void tst_QKeySequence::translated_data()
{
diff --git a/tests/auto/gui/kernel/qsurfaceformat/qsurfaceformat.pro b/tests/auto/gui/kernel/qsurfaceformat/qsurfaceformat.pro
new file mode 100644
index 0000000000..dabffde77b
--- /dev/null
+++ b/tests/auto/gui/kernel/qsurfaceformat/qsurfaceformat.pro
@@ -0,0 +1,8 @@
+CONFIG += testcase
+CONFIG += parallel_test
+TARGET = tst_qsurfaceformat
+
+QT += core-private gui-private testlib
+
+SOURCES += tst_qsurfaceformat.cpp
+DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/gui/kernel/qsurfaceformat/tst_qsurfaceformat.cpp b/tests/auto/gui/kernel/qsurfaceformat/tst_qsurfaceformat.cpp
new file mode 100644
index 0000000000..bd4fc88b3c
--- /dev/null
+++ b/tests/auto/gui/kernel/qsurfaceformat/tst_qsurfaceformat.cpp
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <qsurfaceformat.h>
+
+#include <QtTest/QtTest>
+
+class tst_QSurfaceFormat: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void versionCheck_data();
+ void versionCheck();
+};
+
+void tst_QSurfaceFormat::versionCheck_data()
+{
+ QTest::addColumn<int>("formatMajor");
+ QTest::addColumn<int>("formatMinor");
+ QTest::addColumn<int>("compareMajor");
+ QTest::addColumn<int>("compareMinor");
+ QTest::addColumn<bool>("expected");
+
+ QTest::newRow("lower major, lower minor")
+ << 3 << 2 << 2 << 1 << true;
+ QTest::newRow("lower major, same minor")
+ << 3 << 2 << 2 << 2 << true;
+ QTest::newRow("lower major, greater minor")
+ << 3 << 2 << 2 << 3 << true;
+ QTest::newRow("same major, lower minor")
+ << 3 << 2 << 3 << 1 << true;
+ QTest::newRow("same major, same minor")
+ << 3 << 2 << 3 << 2 << true;
+ QTest::newRow("same major, greater minor")
+ << 3 << 2 << 3 << 3 << false;
+ QTest::newRow("greater major, lower minor")
+ << 3 << 2 << 4 << 1 << false;
+ QTest::newRow("greater major, same minor")
+ << 3 << 2 << 4 << 2 << false;
+ QTest::newRow("greater major, greater minor")
+ << 3 << 2 << 4 << 3 << false;
+}
+
+void tst_QSurfaceFormat::versionCheck()
+{
+ QFETCH( int, formatMajor );
+ QFETCH( int, formatMinor );
+ QFETCH( int, compareMajor );
+ QFETCH( int, compareMinor );
+ QFETCH( bool, expected );
+
+ QSurfaceFormat format;
+ format.setMinorVersion(formatMinor);
+ format.setMajorVersion(formatMajor);
+
+ QCOMPARE(format.version() >= qMakePair(compareMajor, compareMinor), expected);
+
+ format.setVersion(formatMajor, formatMinor);
+ QCOMPARE(format.version() >= qMakePair(compareMajor, compareMinor), expected);
+}
+
+#include <tst_qsurfaceformat.moc>
+QTEST_MAIN(tst_QSurfaceFormat);
diff --git a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
index 9aebe135ef..5934776c5b 100644
--- a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
+++ b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
@@ -414,7 +414,7 @@ void tst_QTouchEvent::touchBeginPropagatesWhenIgnored()
// QGraphicsView
{
QGraphicsScene scene;
- tst_QTouchEventGraphicsItem root, child, grandchild;
+ tst_QTouchEventGraphicsItem root, child, grandchild;
QGraphicsView view(&scene);
scene.addItem(&root);
root.setPos(100, 100);
@@ -778,7 +778,7 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchScreen()
QVERIFY(rightWidget.seenTouchBegin);
QVERIFY(!rightWidget.seenTouchUpdate);
QVERIFY(!rightWidget.seenTouchEnd);
- QCOMPARE(leftWidget.touchBeginPoints.count(), 1);
+ QCOMPARE(leftWidget.touchBeginPoints.count(), 1);
QCOMPARE(rightWidget.touchBeginPoints.count(), 1);
{
QTouchEvent::TouchPoint leftTouchPoint = leftWidget.touchBeginPoints.first();
@@ -1633,4 +1633,4 @@ void tst_QTouchEvent::testMultiDevice()
QTEST_MAIN(tst_QTouchEvent)
-#include "tst_qtouchevent.moc"
+#include "tst_qtouchevent.moc"
diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
index 30666aaf2a..b67920737e 100644
--- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
+++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
@@ -49,6 +49,7 @@
// For QSignalSpy slot connections.
Q_DECLARE_METATYPE(Qt::ScreenOrientation)
+Q_DECLARE_METATYPE(QWindow::Visibility)
class tst_QWindow: public QObject
{
@@ -75,6 +76,8 @@ private slots:
void inputReentrancy();
void tabletEvents();
void windowModality_QTBUG27039();
+ void visibility();
+ void mask();
void initTestCase()
{
@@ -1079,6 +1082,60 @@ void tst_QWindow::windowModality_QTBUG27039()
QCOMPARE(modalA.mousePressedCount, 1);
}
+void tst_QWindow::visibility()
+{
+ qRegisterMetaType<Qt::WindowModality>("QWindow::Visibility");
+
+ QWindow window;
+ QSignalSpy spy(&window, SIGNAL(visibilityChanged(QWindow::Visibility)));
+
+ window.setVisibility(QWindow::AutomaticVisibility);
+ QVERIFY(window.isVisible());
+ QVERIFY(window.visibility() != QWindow::Hidden);
+ QVERIFY(window.visibility() != QWindow::AutomaticVisibility);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+
+ window.setVisibility(QWindow::Hidden);
+ QVERIFY(!window.isVisible());
+ QCOMPARE(window.visibility(), QWindow::Hidden);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+
+ window.setVisibility(QWindow::FullScreen);
+ QVERIFY(window.isVisible());
+ QCOMPARE(window.windowState(), Qt::WindowFullScreen);
+ QCOMPARE(window.visibility(), QWindow::FullScreen);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+
+ window.setWindowState(Qt::WindowNoState);
+ QCOMPARE(window.visibility(), QWindow::Windowed);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+
+ window.setVisible(false);
+ QCOMPARE(window.visibility(), QWindow::Hidden);
+ QCOMPARE(spy.count(), 1);
+ spy.clear();
+}
+
+void tst_QWindow::mask()
+{
+ QRegion mask = QRect(10, 10, 800 - 20, 600 - 20);
+
+ QWindow window;
+ window.resize(800, 600);
+ window.setMask(mask);
+
+ QCOMPARE(window.mask(), QRegion());
+
+ window.create();
+ window.setMask(mask);
+
+ QCOMPARE(window.mask(), mask);
+}
+
#include <tst_qwindow.moc>
QTEST_MAIN(tst_QWindow)
diff --git a/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp b/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp
index 5cd597aeb8..0041ad0015 100644
--- a/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp
+++ b/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp
@@ -128,10 +128,16 @@ private slots:
void crossProduct();
void normal_data();
void normal();
+ void distanceToPoint2_data();
+ void distanceToPoint2();
+ void distanceToPoint3_data();
+ void distanceToPoint3();
void distanceToPlane_data();
void distanceToPlane();
- void distanceToLine_data();
- void distanceToLine();
+ void distanceToLine2_data();
+ void distanceToLine2();
+ void distanceToLine3_data();
+ void distanceToLine3();
void dotProduct2_data();
void dotProduct2();
@@ -1788,6 +1794,108 @@ void tst_QVectorND::normal()
QVERIFY(QVector3D::normal(point, v1 + point, v2 + point) == v3.normalized());
}
+// Test distance to point calculations.
+void tst_QVectorND::distanceToPoint2_data()
+{
+ QTest::addColumn<float>("x1"); // Point to test for distance
+ QTest::addColumn<float>("y1");
+ QTest::addColumn<float>("x2"); // Point to test against
+ QTest::addColumn<float>("y2");
+
+ QTest::addColumn<float>("distance");
+
+ QTest::newRow("null")
+ << 0.0f << 0.0f
+ << 0.0f << 1.0f
+ << 1.0f;
+
+ QTest::newRow("on point")
+ << 1.0f << 1.0f
+ << 1.0f << 1.0f
+ << 0.0f;
+
+ QTest::newRow("off point")
+ << 0.0f << 1.0f
+ << 0.0f << 2.0f
+ << 1.0f;
+
+ QTest::newRow("off point 2")
+ << 0.0f << 0.0f
+ << 0.0f << 2.0f
+ << 2.0f;
+
+ QTest::newRow("minus point")
+ << 0.0f << 0.0f
+ << 0.0f << -2.0f
+ << 2.0f;
+}
+void tst_QVectorND::distanceToPoint2()
+{
+ QFETCH(float, x1);
+ QFETCH(float, y1);
+ QFETCH(float, x2);
+ QFETCH(float, y2);
+ QFETCH(float, distance);
+
+ QVector2D v1(x1, y1);
+ QVector2D v2(x2, y2);
+
+ QCOMPARE(v1.distanceToPoint(v2), distance);
+}
+
+// Test distance to point calculations.
+void tst_QVectorND::distanceToPoint3_data()
+{
+ QTest::addColumn<float>("x1"); // Point to test for distance
+ QTest::addColumn<float>("y1");
+ QTest::addColumn<float>("z1");
+ QTest::addColumn<float>("x2"); // Point to test against
+ QTest::addColumn<float>("y2");
+ QTest::addColumn<float>("z2");
+
+ QTest::addColumn<float>("distance");
+
+ QTest::newRow("null")
+ << 0.0f << 0.0f << 0.0f
+ << 0.0f << 0.0f << 1.0f
+ << 1.0f;
+
+ QTest::newRow("on point")
+ << 0.0f << 0.0f << 0.0f
+ << 0.0f << 0.0f << 0.0f
+ << 0.0f;
+
+ QTest::newRow("off point")
+ << 0.0f << 0.0f << 1.0f
+ << 0.0f << 0.0f << 2.0f
+ << 1.0f;
+
+ QTest::newRow("off point 2")
+ << 0.0f << 0.0f << 0.0f
+ << 0.0f << 2.0f << 0.0f
+ << 2.0f;
+
+ QTest::newRow("minus point")
+ << 0.0f << 0.0f << 0.0f
+ << 0.0f << -2.0f << 0.0f
+ << 2.0f;
+}
+void tst_QVectorND::distanceToPoint3()
+{
+ QFETCH(float, x1);
+ QFETCH(float, y1);
+ QFETCH(float, z1);
+ QFETCH(float, x2);
+ QFETCH(float, y2);
+ QFETCH(float, z2);
+ QFETCH(float, distance);
+
+ QVector3D v1(x1, y1, z1);
+ QVector3D v2(x2, y2, z2);
+
+ QCOMPARE(v1.distanceToPoint(v2), distance);
+}
+
// Test distance to plane calculations.
void tst_QVectorND::distanceToPlane_data()
{
@@ -1862,7 +1970,65 @@ void tst_QVectorND::distanceToPlane()
}
// Test distance to line calculations.
-void tst_QVectorND::distanceToLine_data()
+void tst_QVectorND::distanceToLine2_data()
+{
+ QTest::addColumn<float>("x1"); // Point on line
+ QTest::addColumn<float>("y1");
+ QTest::addColumn<float>("x2"); // Direction of the line
+ QTest::addColumn<float>("y2");
+ QTest::addColumn<float>("x3"); // Point to test for distance
+ QTest::addColumn<float>("y3");
+ QTest::addColumn<float>("distance");
+
+ QTest::newRow("null")
+ << 0.0f << 0.0f
+ << 0.0f << 0.1f
+ << 0.0f << 0.0f
+ << 0.0f;
+
+ QTest::newRow("on line")
+ << 0.0f << 0.0f
+ << 0.0f << 1.0f
+ << 0.0f << 5.0f
+ << 0.0f;
+
+ QTest::newRow("off line")
+ << 0.0f << 0.0f
+ << 0.0f << 1.0f
+ << 1.0f << 0.0f
+ << 1.0f;
+
+ QTest::newRow("off line 2")
+ << 0.0f << 0.0f
+ << 0.0f << 1.0f
+ << -2.0f << 0.0f
+ << 2.0f;
+
+ QTest::newRow("points")
+ << 0.0f << 0.0f
+ << 0.0f << 0.0f
+ << 0.0f << 5.0f
+ << 5.0f;
+}
+
+void tst_QVectorND::distanceToLine2()
+{
+ QFETCH(float, x1);
+ QFETCH(float, y1);
+ QFETCH(float, x2);
+ QFETCH(float, y2);
+ QFETCH(float, x3);
+ QFETCH(float, y3);
+ QFETCH(float, distance);
+
+ QVector2D v1(x1, y1);
+ QVector2D v2(x2, y2);
+ QVector2D v3(x3, y3);
+
+ QCOMPARE(v3.distanceToLine(v1, v2), distance);
+}
+// Test distance to line calculations.
+void tst_QVectorND::distanceToLine3_data()
{
QTest::addColumn<float>("x1"); // Point on line
QTest::addColumn<float>("y1");
@@ -1905,7 +2071,7 @@ void tst_QVectorND::distanceToLine_data()
<< 0.0f << 5.0f << 0.0f
<< 5.0f;
}
-void tst_QVectorND::distanceToLine()
+void tst_QVectorND::distanceToLine3()
{
QFETCH(float, x1);
QFETCH(float, y1);
diff --git a/tests/auto/gui/painting/qpainter/qpainter.pro b/tests/auto/gui/painting/qpainter/qpainter.pro
index a30564cc50..752f9be1f4 100644
--- a/tests/auto/gui/painting/qpainter/qpainter.pro
+++ b/tests/auto/gui/painting/qpainter/qpainter.pro
@@ -4,7 +4,6 @@ TARGET = tst_qpainter
QT += testlib
qtHaveModule(widgets): QT += widgets widgets-private
-qtHaveModule(widgets):!wince*: QT += printsupport
SOURCES += tst_qpainter.cpp
diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
index 774ade5fb0..6c37f1fc27 100644
--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
@@ -53,9 +53,6 @@
#include <qthread.h>
#include <limits.h>
#if !defined(Q_OS_WINCE)
-#ifndef QT_NO_WIDGETS
-#include <qprinter.h>
-#endif
#include <math.h>
#endif
#include <qpaintengine.h>
diff --git a/tests/auto/gui/painting/qpathclipper/paths.cpp b/tests/auto/gui/painting/qpathclipper/paths.cpp
index d7f0d6d59b..3bc2484578 100644
--- a/tests/auto/gui/painting/qpathclipper/paths.cpp
+++ b/tests/auto/gui/painting/qpathclipper/paths.cpp
@@ -127,7 +127,7 @@ QPainterPath Paths::body()
path.cubicTo(105.28125,81.341000, 89.784000,65.812500, 70.531250,65.812500);
path.lineTo(54.437500,65.812500);
path.closeSubpath();
-
+
return path;
}
@@ -143,7 +143,7 @@ QPainterPath Paths::mailbox()
path.lineTo(443.62570,100.11509);
path.lineTo(355.22951,136.82424);
path.closeSubpath();
-
+
return path;
}
@@ -271,7 +271,7 @@ QPainterPath Paths::lips()
path.cubicTo(283.58862,123.78263, 270.15105,136.64382, 243.62716,155.61729);
path.cubicTo(217.47805,174.32266, 199.38332,176.65905, 177.02257,176.65905);
path.closeSubpath();
-
+
return path;
}
@@ -290,14 +290,14 @@ QPainterPath Paths::bezier2()
QPainterPath path;
path.moveTo(200,200);
path.cubicTo(200,125, 500,100, 500,500);
-
+
return path;
}
QPainterPath Paths::random1()
{
QPainterPath path;
-
+
path.moveTo(65.714286,91.428571);
path.lineTo(217.14286, 102.85714);
path.cubicTo(219.04762, 106.66666,
@@ -341,7 +341,7 @@ QPainterPath Paths::random1()
QPainterPath Paths::random2()
{
QPainterPath path;
-
+
path.moveTo(314.28571,160);
path.cubicTo(434.28571,125.71429,
505.71429,200,
@@ -573,7 +573,7 @@ QPainterPath Paths::triangle1()
}
QPainterPath Paths::triangle2()
-{
+{
QPainterPath path;
path.moveTo(0, 120);
diff --git a/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp b/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp
index cd4f808c4e..4c73676329 100644
--- a/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp
+++ b/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp
@@ -154,7 +154,7 @@ void tst_QWMatrix::mapping_data()
<< QRect( 0, 0, 30, 40 )
<< QPolygon( QRect( -300, -400, 300, 400 ) );
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
+#if (defined(Q_OS_WIN) || defined(Q_OS_WINCE)) && !defined(M_PI)
#define M_PI 3.14159265897932384626433832795f
#endif
diff --git a/tests/auto/gui/qopengl/tst_qopengl.cpp b/tests/auto/gui/qopengl/tst_qopengl.cpp
index 1d498773ae..97f3ec128d 100644
--- a/tests/auto/gui/qopengl/tst_qopengl.cpp
+++ b/tests/auto/gui/qopengl/tst_qopengl.cpp
@@ -47,6 +47,7 @@
#include <QtGui/QPainter>
#include <QtGui/QScreen>
#include <QtGui/QWindow>
+#include <QtGui/QOffscreenSurface>
#include <QtTest/QtTest>
@@ -57,12 +58,18 @@ class tst_QOpenGL : public QObject
Q_OBJECT
private slots:
+ void sharedResourceCleanup_data();
void sharedResourceCleanup();
+ void multiGroupSharedResourceCleanup_data();
void multiGroupSharedResourceCleanup();
+ void multiGroupSharedResourceCleanupCustom_data();
void multiGroupSharedResourceCleanupCustom();
+ void fboSimpleRendering_data();
void fboSimpleRendering();
+ void fboRendering_data();
void fboRendering();
void fboHandleNulledAfterContextDestroyed();
+ void openGLPaintDevice_data();
void openGLPaintDevice();
void aboutToBeDestroyed();
void QTBUG15621_triangulatingStrokerDivZero();
@@ -129,16 +136,43 @@ struct SharedResource : public QOpenGLSharedResource
SharedResourceTracker *tracker;
};
+static QSurface *createSurface(int surfaceClass)
+{
+ if (surfaceClass == int(QSurface::Window)) {
+ QWindow *window = new QWindow;
+ window->setSurfaceType(QWindow::OpenGLSurface);
+ window->setGeometry(0, 0, 10, 10);
+ window->create();
+ return window;
+ } else if (surfaceClass == int(QSurface::Offscreen)) {
+ QOffscreenSurface *offscreenSurface = new QOffscreenSurface;
+ offscreenSurface->create();
+ return offscreenSurface;
+ }
+ return 0;
+}
+
+static void common_data()
+{
+ QTest::addColumn<int>("surfaceClass");
+
+ QTest::newRow("Using QWindow") << int(QSurface::Window);
+ QTest::newRow("Using QOffscreenSurface") << int(QSurface::Offscreen);
+}
+
+void tst_QOpenGL::sharedResourceCleanup_data()
+{
+ common_data();
+}
+
void tst_QOpenGL::sharedResourceCleanup()
{
- QWindow window;
- window.setSurfaceType(QWindow::OpenGLSurface);
- window.setGeometry(0, 0, 10, 10);
- window.create();
+ QFETCH(int, surfaceClass);
+ QScopedPointer<QSurface> surface(createSurface(surfaceClass));
QOpenGLContext *ctx = new QOpenGLContext;
ctx->create();
- ctx->makeCurrent(&window);
+ ctx->makeCurrent(surface.data());
SharedResourceTracker tracker;
SharedResource *resource = new SharedResource(&tracker);
@@ -165,7 +199,7 @@ void tst_QOpenGL::sharedResourceCleanup()
QCOMPARE(tracker.freeResourceCalls, 0);
QCOMPARE(tracker.destructorCalls, 0);
- ctx2->makeCurrent(&window);
+ ctx2->makeCurrent(surface.data());
// freeResource() should now have been called
QCOMPARE(tracker.invalidateResourceCalls, 0);
@@ -192,17 +226,20 @@ void tst_QOpenGL::sharedResourceCleanup()
QCOMPARE(tracker.destructorCalls, 1);
}
+void tst_QOpenGL::multiGroupSharedResourceCleanup_data()
+{
+ common_data();
+}
+
void tst_QOpenGL::multiGroupSharedResourceCleanup()
{
- QWindow window;
- window.setSurfaceType(QWindow::OpenGLSurface);
- window.setGeometry(0, 0, 10, 10);
- window.create();
+ QFETCH(int, surfaceClass);
+ QScopedPointer<QSurface> surface(createSurface(surfaceClass));
for (int i = 0; i < 10; ++i) {
QOpenGLContext *gl = new QOpenGLContext();
gl->create();
- gl->makeCurrent(&window);
+ gl->makeCurrent(surface.data());
{
// Cause QOpenGLMultiGroupSharedResource instantiation.
QOpenGLFunctions func(gl);
@@ -214,16 +251,19 @@ void tst_QOpenGL::multiGroupSharedResourceCleanup()
// Shouldn't crash when application exits.
}
+void tst_QOpenGL::multiGroupSharedResourceCleanupCustom_data()
+{
+ common_data();
+}
+
void tst_QOpenGL::multiGroupSharedResourceCleanupCustom()
{
- QWindow window;
- window.setSurfaceType(QWindow::OpenGLSurface);
- window.setGeometry(0, 0, 10, 10);
- window.create();
+ QFETCH(int, surfaceClass);
+ QScopedPointer<QSurface> surface(createSurface(surfaceClass));
QOpenGLContext *ctx = new QOpenGLContext();
ctx->create();
- ctx->makeCurrent(&window);
+ ctx->makeCurrent(surface.data());
QOpenGLMultiGroupSharedResource multiGroupSharedResource;
SharedResource *resource = multiGroupSharedResource.value<SharedResource>(ctx);
@@ -350,17 +390,20 @@ void qt_opengl_check_test_pattern(const QImage& img)
QFUZZY_COMPARE_PIXELS(img.pixel(192, 64), QColor(Qt::green).rgb());
}
+void tst_QOpenGL::fboSimpleRendering_data()
+{
+ common_data();
+}
void tst_QOpenGL::fboSimpleRendering()
{
- QWindow window;
- window.setSurfaceType(QWindow::OpenGLSurface);
- window.setGeometry(0, 0, 10, 10);
- window.create();
+ QFETCH(int, surfaceClass);
+ QScopedPointer<QSurface> surface(createSurface(surfaceClass));
+
QOpenGLContext ctx;
ctx.create();
- ctx.makeCurrent(&window);
+ ctx.makeCurrent(surface.data());
if (!QOpenGLFramebufferObject::hasOpenGLFramebufferObjects())
QSKIP("QOpenGLFramebufferObject not supported on this platform");
@@ -386,6 +429,11 @@ void tst_QOpenGL::fboSimpleRendering()
delete fbo;
}
+void tst_QOpenGL::fboRendering_data()
+{
+ common_data();
+}
+
// NOTE: This tests that CombinedDepthStencil attachment works by assuming the
// GL2 engine is being used and is implemented the same way as it was when
// this autotest was written. If this is not the case, there may be some
@@ -397,14 +445,13 @@ void tst_QOpenGL::fboRendering()
QSKIP("QTBUG-22617");
#endif
- QWindow window;
- window.setSurfaceType(QWindow::OpenGLSurface);
- window.setGeometry(0, 0, 10, 10);
- window.create();
+ QFETCH(int, surfaceClass);
+ QScopedPointer<QSurface> surface(createSurface(surfaceClass));
+
QOpenGLContext ctx;
ctx.create();
- ctx.makeCurrent(&window);
+ ctx.makeCurrent(surface.data());
if (!QOpenGLFramebufferObject::hasOpenGLFramebufferObjects())
QSKIP("QOpenGLFramebufferObject not supported on this platform");
@@ -461,16 +508,19 @@ void tst_QOpenGL::fboHandleNulledAfterContextDestroyed()
QCOMPARE(fbo->handle(), 0U);
}
+void tst_QOpenGL::openGLPaintDevice_data()
+{
+ common_data();
+}
+
void tst_QOpenGL::openGLPaintDevice()
{
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(__x86_64__)
QSKIP("QTBUG-22617");
#endif
- QWindow window;
- window.setSurfaceType(QWindow::OpenGLSurface);
- window.setGeometry(0, 0, 128, 128);
- window.create();
+ QFETCH(int, surfaceClass);
+ QScopedPointer<QSurface> surface(createSurface(surfaceClass));
QOpenGLContext ctx;
ctx.create();
@@ -478,7 +528,7 @@ void tst_QOpenGL::openGLPaintDevice()
QSurfaceFormat format = ctx.format();
if (format.majorVersion() < 2)
QSKIP("This test requires at least OpenGL 2.0");
- ctx.makeCurrent(&window);
+ ctx.makeCurrent(surface.data());
QImage image(128, 128, QImage::Format_RGB32);
QPainter p(&image);
diff --git a/tests/auto/gui/text/qfontcache/.gitignore b/tests/auto/gui/text/qfontcache/.gitignore
new file mode 100644
index 0000000000..e963ab010a
--- /dev/null
+++ b/tests/auto/gui/text/qfontcache/.gitignore
@@ -0,0 +1 @@
+tst_qfontcache
diff --git a/tests/auto/gui/text/qfontcache/qfontcache.pro b/tests/auto/gui/text/qfontcache/qfontcache.pro
new file mode 100644
index 0000000000..313cd78714
--- /dev/null
+++ b/tests/auto/gui/text/qfontcache/qfontcache.pro
@@ -0,0 +1,8 @@
+CONFIG += testcase
+CONFIG += parallel_test
+TARGET = tst_qfontcache
+QT += testlib
+QT += core-private gui-private
+SOURCES += tst_qfontcache.cpp
+
+DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp b/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp
new file mode 100644
index 0000000000..a85fadfce7
--- /dev/null
+++ b/tests/auto/gui/text/qfontcache/tst_qfontcache.cpp
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+
+
+#include <qfont.h>
+#include <private/qfont_p.h>
+#include <private/qfontengine_p.h>
+
+class tst_QFontCache : public QObject
+{
+Q_OBJECT
+
+public:
+ tst_QFontCache();
+ virtual ~tst_QFontCache();
+
+private slots:
+ void clear();
+};
+
+QT_BEGIN_NAMESPACE
+extern void qt_setQtEnableTestFont(bool value); // qfontdatabase.cpp
+
+#ifdef QT_BUILD_INTERNAL
+// qfontengine.cpp
+extern void QFontEngine_startCollectingEngines();
+extern QList<QFontEngine *> QFontEngine_stopCollectingEngines();
+#endif
+QT_END_NAMESPACE
+
+tst_QFontCache::tst_QFontCache()
+{
+}
+
+tst_QFontCache::~tst_QFontCache()
+{
+}
+
+void tst_QFontCache::clear()
+{
+#ifdef QT_BUILD_INTERNAL
+ QFontEngine_startCollectingEngines();
+#else
+ // must not crash, at very least ;)
+#endif
+
+ QFontEngine *fontEngine = 0;
+
+ {
+ // we're never caching the box (and the "test") font engines
+ // let's ensure we're not leaking them as well as the cached ones
+ qt_setQtEnableTestFont(true);
+
+ QFont f;
+ f.setFamily("__Qt__Box__Engine__");
+ f.exactMatch(); // loads engine
+ }
+ {
+ QFontDatabase db;
+
+ QFont f;
+ f.setStyleHint(QFont::Serif);
+ const QString familyForHint(f.defaultFamily());
+
+ // it should at least return a family that is available
+ QVERIFY(db.hasFamily(familyForHint));
+ f.exactMatch(); // loads engine
+
+ fontEngine = QFontPrivate::get(f)->engineForScript(QChar::Script_Common);
+ QVERIFY(fontEngine);
+ QVERIFY(QFontCache::instance()->engineCacheCount.value(fontEngine) > 0); // ensure it is cached
+
+ // acquire the engine to use it somewhere else:
+ // (e.g. like the we do in QFontSubset() or like QRawFont does in fromFont())
+ fontEngine->ref.ref();
+
+ // cache the engine once again; there is a special case when the engine is cached more than once
+ QFontCache::instance()->insertEngine(QFontCache::Key(QFontDef(), 0, 0), fontEngine);
+ }
+
+ // use it:
+ // e.g. fontEngine->stringToCMap(..);
+
+ // and whilst it is alive, don't hesitate to add/remove the app-local fonts:
+ // (QFontDatabase::{add,remove}ApplicationFont() clears the cache)
+ QFontCache::instance()->clear();
+
+ // release the acquired engine:
+ if (fontEngine) {
+ if (!fontEngine->ref.deref())
+ delete fontEngine;
+ fontEngine = 0;
+ }
+
+ // we may even exit the application now:
+ QFontCache::instance()->cleanup();
+
+#ifdef QT_BUILD_INTERNAL
+ QList<QFontEngine *> leakedEngines = QFontEngine_stopCollectingEngines();
+for (int i = 0; i < leakedEngines.size(); ++i) qWarning() << i << leakedEngines.at(i) << leakedEngines.at(i)->ref.load();
+ // and we are not leaking!
+ QCOMPARE(leakedEngines.size(), 0);
+#endif
+}
+
+QTEST_MAIN(tst_QFontCache)
+#include "tst_qfontcache.moc"
diff --git a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
index 15e8c2ee90..cddec5b6e7 100644
--- a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
+++ b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
@@ -281,7 +281,7 @@ void tst_QFontMetrics::inFontUcs4()
}
{
- QFontEngine *engine = QFontPrivate::get(font)->engineForScript(QUnicodeTables::Common);
+ QFontEngine *engine = QFontPrivate::get(font)->engineForScript(QChar::Script_Common);
QGlyphLayout glyphs;
glyphs.numGlyphs = 3;
uint buf[3];
diff --git a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp
index f62e5f188b..46f97840af 100644
--- a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp
+++ b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp
@@ -224,7 +224,7 @@ void tst_QStaticText::drawToRect()
#endif
QVERIFY(imageDrawText.toImage() != m_whiteSquare);
- QCOMPARE(imageDrawStaticText, imageDrawText);
+ QCOMPARE(imageDrawStaticText, imageDrawText);
}
void tst_QStaticText::prepareToCorrectData()
diff --git a/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
index fa2a2985f0..5484c9ed93 100644
--- a/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
+++ b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
@@ -527,26 +527,26 @@ void tst_QSyntaxHighlighter::rehighlight()
void tst_QSyntaxHighlighter::rehighlightBlock()
{
TestHighlighter *hl = new TestHighlighter(doc);
-
+
cursor.movePosition(QTextCursor::Start);
cursor.beginEditBlock();
cursor.insertText("Hello");
cursor.insertBlock();
cursor.insertText("World");
cursor.endEditBlock();
-
+
hl->callCount = 0;
hl->highlightedText.clear();
QTextBlock block = doc->begin();
hl->rehighlightBlock(block);
-
+
QCOMPARE(hl->highlightedText, QString("Hello"));
QCOMPARE(hl->callCount, 1);
-
+
hl->callCount = 0;
hl->highlightedText.clear();
hl->rehighlightBlock(block.next());
-
+
QCOMPARE(hl->highlightedText, QString("World"));
QCOMPARE(hl->callCount, 1);
}
diff --git a/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp
index f7b4456c43..1eb073d3b4 100644
--- a/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp
+++ b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp
@@ -72,7 +72,7 @@ private slots:
/*! \internal
This (used to) trigger a crash in:
-
+
QDataStream &operator>>(QDataStream &stream, QTextFormat &fmt)
which is most easily produced through QSettings.
diff --git a/tests/auto/gui/text/qtextlayout/qtextlayout.pro b/tests/auto/gui/text/qtextlayout/qtextlayout.pro
index 9833a5bd1a..9a2388d878 100644
--- a/tests/auto/gui/text/qtextlayout/qtextlayout.pro
+++ b/tests/auto/gui/text/qtextlayout/qtextlayout.pro
@@ -3,5 +3,4 @@ TARGET = tst_qtextlayout
QT += core-private gui-private testlib
HEADERS +=
SOURCES += tst_qtextlayout.cpp
-DEFINES += QT_COMPILES_IN_HARFBUZZ
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/gui/text/qtextscriptengine/generate/generate.pro b/tests/auto/gui/text/qtextscriptengine/generate/generate.pro
index bd85c108c2..908c309447 100644
--- a/tests/auto/gui/text/qtextscriptengine/generate/generate.pro
+++ b/tests/auto/gui/text/qtextscriptengine/generate/generate.pro
@@ -1,5 +1,5 @@
CONFIG -= moc
-QT += core-private # for harfbuzz
+QT += core-private
INCLUDEPATH += . /usr/include/freetype2
SOURCES += main.cpp
diff --git a/tests/auto/gui/text/qtextscriptengine/generate/main.cpp b/tests/auto/gui/text/qtextscriptengine/generate/main.cpp
index 1dcdc28d81..f3fa42ec2e 100644
--- a/tests/auto/gui/text/qtextscriptengine/generate/main.cpp
+++ b/tests/auto/gui/text/qtextscriptengine/generate/main.cpp
@@ -81,7 +81,7 @@ void MyEdit::setText(const QString &str)
result = "Using font '" + e->fontEngine(e->layoutData->items[0])->fontDef.family + "'\n\n";
result += "{ { ";
- for (int i = 0; i < str.length(); ++i)
+ for (int i = 0; i < str.length(); ++i)
result += "0x" + QString::number(str.at(i).unicode(), 16) + ", ";
result += "0x0 },\n { ";
for (int i = 0; i < e->layoutData->items[0].num_glyphs; ++i)
diff --git a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
index a6da20cc2b..eebac28323 100644
--- a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
+++ b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
@@ -48,7 +48,7 @@
class tst_QTextScriptEngine : public QObject
{
-Q_OBJECT
+ Q_OBJECT
public:
tst_QTextScriptEngine();
@@ -210,93 +210,93 @@ void tst_QTextScriptEngine::devanagari_data()
{
if (QFontDatabase().families(QFontDatabase::Devanagari).contains("Raghindi")) {
QFont f("Raghindi");
- const ShapeTable shape_table [] = {
- // Ka
- { { 0x0915, 0x0 },
- { 0x0080, 0x0 } },
- // Ka Halant
- { { 0x0915, 0x094d, 0x0 },
- { 0x0080, 0x0051, 0x0 } },
- // Ka Halant Ka
- { { 0x0915, 0x094d, 0x0915, 0x0 },
- { 0x00c8, 0x0080, 0x0 } },
- // Ka MatraI
- { { 0x0915, 0x093f, 0x0 },
- { 0x01d1, 0x0080, 0x0 } },
- // Ra Halant Ka
- { { 0x0930, 0x094d, 0x0915, 0x0 },
- { 0x0080, 0x005b, 0x0 } },
- // Ra Halant Ka MatraI
- { { 0x0930, 0x094d, 0x0915, 0x093f, 0x0 },
- { 0x01d1, 0x0080, 0x005b, 0x0 } },
- // MatraI
- { { 0x093f, 0x0 },
- { 0x01d4, 0x029c, 0x0 } },
- // Ka Nukta
- { { 0x0915, 0x093c, 0x0 },
- { 0x00a4, 0x0 } },
- // Ka Halant Ra
- { { 0x0915, 0x094d, 0x0930, 0x0 },
- { 0x0110, 0x0 } },
- // Ka Halant Ra Halant Ka
- { { 0x0915, 0x094d, 0x0930, 0x094d, 0x0915, 0x0 },
- { 0x0158, 0x0080, 0x0 } },
- { { 0x0930, 0x094d, 0x200d, 0x0 },
- { 0x00e2, 0x0 } },
- { { 0x0915, 0x094d, 0x0930, 0x094d, 0x200d, 0x0 },
- { 0x0158, 0x0 } },
-
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Raghindi");
+ const ShapeTable shape_table [] = {
+ // Ka
+ { { 0x0915, 0x0 },
+ { 0x0080, 0x0 } },
+ // Ka Halant
+ { { 0x0915, 0x094d, 0x0 },
+ { 0x0080, 0x0051, 0x0 } },
+ // Ka Halant Ka
+ { { 0x0915, 0x094d, 0x0915, 0x0 },
+ { 0x00c8, 0x0080, 0x0 } },
+ // Ka MatraI
+ { { 0x0915, 0x093f, 0x0 },
+ { 0x01d1, 0x0080, 0x0 } },
+ // Ra Halant Ka
+ { { 0x0930, 0x094d, 0x0915, 0x0 },
+ { 0x0080, 0x005b, 0x0 } },
+ // Ra Halant Ka MatraI
+ { { 0x0930, 0x094d, 0x0915, 0x093f, 0x0 },
+ { 0x01d1, 0x0080, 0x005b, 0x0 } },
+ // MatraI
+ { { 0x093f, 0x0 },
+ { 0x01d4, 0x029c, 0x0 } },
+ // Ka Nukta
+ { { 0x0915, 0x093c, 0x0 },
+ { 0x00a4, 0x0 } },
+ // Ka Halant Ra
+ { { 0x0915, 0x094d, 0x0930, 0x0 },
+ { 0x0110, 0x0 } },
+ // Ka Halant Ra Halant Ka
+ { { 0x0915, 0x094d, 0x0930, 0x094d, 0x0915, 0x0 },
+ { 0x0158, 0x0080, 0x0 } },
+ { { 0x0930, 0x094d, 0x200d, 0x0 },
+ { 0x00e2, 0x0 } },
+ { { 0x0915, 0x094d, 0x0930, 0x094d, 0x200d, 0x0 },
+ { 0x0158, 0x0 } },
+
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Raghindi");
}
{
if (QFontDatabase().families(QFontDatabase::Devanagari).contains("Mangal")) {
QFont f("Mangal");
- const ShapeTable shape_table [] = {
- // Ka
- { { 0x0915, 0x0 },
- { 0x0080, 0x0 } },
- // Ka Halant
- { { 0x0915, 0x094d, 0x0 },
- { 0x0080, 0x0051, 0x0 } },
- // Ka Halant Ka
- { { 0x0915, 0x094d, 0x0915, 0x0 },
- { 0x00c8, 0x0080, 0x0 } },
- // Ka MatraI
- { { 0x0915, 0x093f, 0x0 },
- { 0x01d1, 0x0080, 0x0 } },
- // Ra Halant Ka
- { { 0x0930, 0x094d, 0x0915, 0x0 },
- { 0x0080, 0x005b, 0x0 } },
- // Ra Halant Ka MatraI
- { { 0x0930, 0x094d, 0x0915, 0x093f, 0x0 },
- { 0x01d1, 0x0080, 0x005b, 0x0 } },
- // MatraI
- { { 0x093f, 0x0 },
- { 0x01d4, 0x029c, 0x0 } },
- // Ka Nukta
- { { 0x0915, 0x093c, 0x0 },
- { 0x00a4, 0x0 } },
- // Ka Halant Ra
- { { 0x0915, 0x094d, 0x0930, 0x0 },
- { 0x0110, 0x0 } },
- // Ka Halant Ra Halant Ka
- { { 0x0915, 0x094d, 0x0930, 0x094d, 0x0915, 0x0 },
- { 0x0158, 0x0080, 0x0 } },
+ const ShapeTable shape_table [] = {
+ // Ka
+ { { 0x0915, 0x0 },
+ { 0x0080, 0x0 } },
+ // Ka Halant
+ { { 0x0915, 0x094d, 0x0 },
+ { 0x0080, 0x0051, 0x0 } },
+ // Ka Halant Ka
+ { { 0x0915, 0x094d, 0x0915, 0x0 },
+ { 0x00c8, 0x0080, 0x0 } },
+ // Ka MatraI
+ { { 0x0915, 0x093f, 0x0 },
+ { 0x01d1, 0x0080, 0x0 } },
+ // Ra Halant Ka
+ { { 0x0930, 0x094d, 0x0915, 0x0 },
+ { 0x0080, 0x005b, 0x0 } },
+ // Ra Halant Ka MatraI
+ { { 0x0930, 0x094d, 0x0915, 0x093f, 0x0 },
+ { 0x01d1, 0x0080, 0x005b, 0x0 } },
+ // MatraI
+ { { 0x093f, 0x0 },
+ { 0x01d4, 0x029c, 0x0 } },
+ // Ka Nukta
+ { { 0x0915, 0x093c, 0x0 },
+ { 0x00a4, 0x0 } },
+ // Ka Halant Ra
+ { { 0x0915, 0x094d, 0x0930, 0x0 },
+ { 0x0110, 0x0 } },
+ // Ka Halant Ra Halant Ka
+ { { 0x0915, 0x094d, 0x0930, 0x094d, 0x0915, 0x0 },
+ { 0x0158, 0x0080, 0x0 } },
{ { 0x92b, 0x94d, 0x930, 0x0 },
{ 0x125, 0x0 } },
{ { 0x92b, 0x93c, 0x94d, 0x930, 0x0 },
- { 0x149, 0x0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find mangal");
+ { 0x149, 0x0 } },
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find mangal");
}
}
@@ -317,224 +317,224 @@ void tst_QTextScriptEngine::bengali_data()
{
if (QFontDatabase().families(QFontDatabase::Bengali).contains("Akaash")) {
QFont f("Akaash");
- const ShapeTable shape_table [] = {
- // Ka
- { { 0x0995, 0x0 },
- { 0x0151, 0x0 } },
- // Ka Halant
- { { 0x0995, 0x09cd, 0x0 },
- { 0x0151, 0x017d, 0x0 } },
- // Ka Halant Ka
- { { 0x0995, 0x09cd, 0x0995, 0x0 },
- { 0x019b, 0x0 } },
- // Ka MatraI
- { { 0x0995, 0x09bf, 0x0 },
- { 0x0173, 0x0151, 0x0 } },
- // Ra Halant Ka
- { { 0x09b0, 0x09cd, 0x0995, 0x0 },
- { 0x0151, 0x0276, 0x0 } },
- // Ra Halant Ka MatraI
- { { 0x09b0, 0x09cd, 0x0995, 0x09bf, 0x0 },
- { 0x0173, 0x0151, 0x0276, 0x0 } },
- // Ka Nukta
- { { 0x0995, 0x09bc, 0x0 },
- { 0x0151, 0x0171, 0x0 } },
- // Ka Halant Ra
- { { 0x0995, 0x09cd, 0x09b0, 0x0 },
- { 0x01f4, 0x0 } },
- // Ka Halant Ra Halant Ka
- { { 0x0995, 0x09cd, 0x09b0, 0x09cd, 0x0995, 0x0 },
- { 0x025c, 0x0276, 0x0151, 0x0 } },
- // Ya + Halant
- { { 0x09af, 0x09cd, 0x0 },
- { 0x016a, 0x017d, 0x0 } },
- // Da Halant Ya -> Da Ya-Phala
- { { 0x09a6, 0x09cd, 0x09af, 0x0 },
- { 0x01e5, 0x0 } },
- // A Halant Ya -> A Ya-phala
- { { 0x0985, 0x09cd, 0x09af, 0x0 },
- { 0x0145, 0x01cf, 0x0 } },
- // Na Halant Ka
- { { 0x09a8, 0x09cd, 0x0995, 0x0 },
- { 0x026f, 0x0151, 0x0 } },
- // Na Halant ZWNJ Ka
- { { 0x09a8, 0x09cd, 0x200c, 0x0995, 0x0 },
- { 0x0164, 0x017d, 0x0151, 0x0 } },
- // Na Halant ZWJ Ka
- { { 0x09a8, 0x09cd, 0x200d, 0x0995, 0x0 },
- { 0x026f, 0x0151, 0x0 } },
- // Ka Halant ZWNJ Ka
- { { 0x0995, 0x09cd, 0x200c, 0x0995, 0x0 },
- { 0x0151, 0x017d, 0x0151, 0x0 } },
- // Ka Halant ZWJ Ka
- { { 0x0995, 0x09cd, 0x200d, 0x0995, 0x0 },
- { 0x025c, 0x0151, 0x0 } },
- // Na Halant Ra
- { { 0x09a8, 0x09cd, 0x09b0, 0x0 },
- { 0x0207, 0x0 } },
- // Na Halant ZWNJ Ra
- { { 0x09a8, 0x09cd, 0x200c, 0x09b0, 0x0 },
- { 0x0164, 0x017d, 0x016b, 0x0 } },
- // Na Halant ZWJ Ra
- { { 0x09a8, 0x09cd, 0x200d, 0x09b0, 0x0 },
- { 0x026f, 0x016b, 0x0 } },
- // Na Halant Ba
- { { 0x09a8, 0x09cd, 0x09ac, 0x0 },
- { 0x022f, 0x0 } },
- // Na Halant ZWNJ Ba
- { { 0x09a8, 0x09cd, 0x200c, 0x09ac, 0x0 },
- { 0x0164, 0x017d, 0x0167, 0x0 } },
- // Na Halant ZWJ Ba
- { { 0x09a8, 0x09cd, 0x200d, 0x09ac, 0x0 },
- { 0x026f, 0x0167, 0x0 } },
- // Na Halant Dha
- { { 0x09a8, 0x09cd, 0x09a7, 0x0 },
- { 0x01d3, 0x0 } },
- // Na Halant ZWNJ Dha
- { { 0x09a8, 0x09cd, 0x200c, 0x09a7, 0x0 },
- { 0x0164, 0x017d, 0x0163, 0x0 } },
- // Na Halant ZWJ Dha
- { { 0x09a8, 0x09cd, 0x200d, 0x09a7, 0x0 },
- { 0x026f, 0x0163, 0x0 } },
- // Ra Halant Ka MatraAU
- { { 0x09b0, 0x09cd, 0x0995, 0x09cc, 0x0 },
- { 0x0179, 0x0151, 0x0276, 0x017e, 0x0 } },
- // Ra Halant Ba Halant Ba
- { { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 },
- { 0x0232, 0x0276, 0x0 } },
+ const ShapeTable shape_table [] = {
+ // Ka
+ { { 0x0995, 0x0 },
+ { 0x0151, 0x0 } },
+ // Ka Halant
+ { { 0x0995, 0x09cd, 0x0 },
+ { 0x0151, 0x017d, 0x0 } },
+ // Ka Halant Ka
+ { { 0x0995, 0x09cd, 0x0995, 0x0 },
+ { 0x019b, 0x0 } },
+ // Ka MatraI
+ { { 0x0995, 0x09bf, 0x0 },
+ { 0x0173, 0x0151, 0x0 } },
+ // Ra Halant Ka
+ { { 0x09b0, 0x09cd, 0x0995, 0x0 },
+ { 0x0151, 0x0276, 0x0 } },
+ // Ra Halant Ka MatraI
+ { { 0x09b0, 0x09cd, 0x0995, 0x09bf, 0x0 },
+ { 0x0173, 0x0151, 0x0276, 0x0 } },
+ // Ka Nukta
+ { { 0x0995, 0x09bc, 0x0 },
+ { 0x0151, 0x0171, 0x0 } },
+ // Ka Halant Ra
+ { { 0x0995, 0x09cd, 0x09b0, 0x0 },
+ { 0x01f4, 0x0 } },
+ // Ka Halant Ra Halant Ka
+ { { 0x0995, 0x09cd, 0x09b0, 0x09cd, 0x0995, 0x0 },
+ { 0x025c, 0x0276, 0x0151, 0x0 } },
+ // Ya + Halant
+ { { 0x09af, 0x09cd, 0x0 },
+ { 0x016a, 0x017d, 0x0 } },
+ // Da Halant Ya -> Da Ya-Phala
+ { { 0x09a6, 0x09cd, 0x09af, 0x0 },
+ { 0x01e5, 0x0 } },
+ // A Halant Ya -> A Ya-phala
+ { { 0x0985, 0x09cd, 0x09af, 0x0 },
+ { 0x0145, 0x01cf, 0x0 } },
+ // Na Halant Ka
+ { { 0x09a8, 0x09cd, 0x0995, 0x0 },
+ { 0x026f, 0x0151, 0x0 } },
+ // Na Halant ZWNJ Ka
+ { { 0x09a8, 0x09cd, 0x200c, 0x0995, 0x0 },
+ { 0x0164, 0x017d, 0x0151, 0x0 } },
+ // Na Halant ZWJ Ka
+ { { 0x09a8, 0x09cd, 0x200d, 0x0995, 0x0 },
+ { 0x026f, 0x0151, 0x0 } },
+ // Ka Halant ZWNJ Ka
+ { { 0x0995, 0x09cd, 0x200c, 0x0995, 0x0 },
+ { 0x0151, 0x017d, 0x0151, 0x0 } },
+ // Ka Halant ZWJ Ka
+ { { 0x0995, 0x09cd, 0x200d, 0x0995, 0x0 },
+ { 0x025c, 0x0151, 0x0 } },
+ // Na Halant Ra
+ { { 0x09a8, 0x09cd, 0x09b0, 0x0 },
+ { 0x0207, 0x0 } },
+ // Na Halant ZWNJ Ra
+ { { 0x09a8, 0x09cd, 0x200c, 0x09b0, 0x0 },
+ { 0x0164, 0x017d, 0x016b, 0x0 } },
+ // Na Halant ZWJ Ra
+ { { 0x09a8, 0x09cd, 0x200d, 0x09b0, 0x0 },
+ { 0x026f, 0x016b, 0x0 } },
+ // Na Halant Ba
+ { { 0x09a8, 0x09cd, 0x09ac, 0x0 },
+ { 0x022f, 0x0 } },
+ // Na Halant ZWNJ Ba
+ { { 0x09a8, 0x09cd, 0x200c, 0x09ac, 0x0 },
+ { 0x0164, 0x017d, 0x0167, 0x0 } },
+ // Na Halant ZWJ Ba
+ { { 0x09a8, 0x09cd, 0x200d, 0x09ac, 0x0 },
+ { 0x026f, 0x0167, 0x0 } },
+ // Na Halant Dha
+ { { 0x09a8, 0x09cd, 0x09a7, 0x0 },
+ { 0x01d3, 0x0 } },
+ // Na Halant ZWNJ Dha
+ { { 0x09a8, 0x09cd, 0x200c, 0x09a7, 0x0 },
+ { 0x0164, 0x017d, 0x0163, 0x0 } },
+ // Na Halant ZWJ Dha
+ { { 0x09a8, 0x09cd, 0x200d, 0x09a7, 0x0 },
+ { 0x026f, 0x0163, 0x0 } },
+ // Ra Halant Ka MatraAU
+ { { 0x09b0, 0x09cd, 0x0995, 0x09cc, 0x0 },
+ { 0x0179, 0x0151, 0x0276, 0x017e, 0x0 } },
+ // Ra Halant Ba Halant Ba
+ { { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 },
+ { 0x0232, 0x0276, 0x0 } },
{ { 0x9b0, 0x9cd, 0x995, 0x9be, 0x982, 0x0 },
{ 0x151, 0x276, 0x172, 0x143, 0x0 } },
{ { 0x9b0, 0x9cd, 0x995, 0x9be, 0x983, 0x0 },
- { 0x151, 0x276, 0x172, 0x144, 0x0 } },
+ { 0x151, 0x276, 0x172, 0x144, 0x0 } },
// test decomposed two parts matras
{ { 0x995, 0x9c7, 0x9be, 0x0 },
{ 0x179, 0x151, 0x172, 0x0 } },
{ { 0x995, 0x9c7, 0x9d7, 0x0 },
{ 0x179, 0x151, 0x17e, 0x0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Akaash");
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Akaash");
}
{
if (QFontDatabase().families(QFontDatabase::Bengali).contains("Mukti Narrow")) {
QFont f("Mukti Narrow");
- const ShapeTable shape_table [] = {
- // Ka
- { { 0x0995, 0x0 },
- { 0x0073, 0x0 } },
- // Ka Halant
- { { 0x0995, 0x09cd, 0x0 },
- { 0x00b9, 0x0 } },
- // Ka Halant Ka
- { { 0x0995, 0x09cd, 0x0995, 0x0 },
- { 0x0109, 0x0 } },
- // Ka MatraI
- { { 0x0995, 0x09bf, 0x0 },
- { 0x0095, 0x0073, 0x0 } },
- // Ra Halant Ka
- { { 0x09b0, 0x09cd, 0x0995, 0x0 },
- { 0x0073, 0x00e1, 0x0 } },
- // Ra Halant Ka MatraI
- { { 0x09b0, 0x09cd, 0x0995, 0x09bf, 0x0 },
- { 0x0095, 0x0073, 0x00e1, 0x0 } },
- // MatraI
- { { 0x09bf, 0x0 },
- { 0x0095, 0x01c8, 0x0 } },
- // Ka Nukta
- { { 0x0995, 0x09bc, 0x0 },
- { 0x0073, 0x0093, 0x0 } },
- // Ka Halant Ra
- { { 0x0995, 0x09cd, 0x09b0, 0x0 },
- { 0x00e5, 0x0 } },
- // Ka Halant Ra Halant Ka
+ const ShapeTable shape_table [] = {
+ // Ka
+ { { 0x0995, 0x0 },
+ { 0x0073, 0x0 } },
+ // Ka Halant
+ { { 0x0995, 0x09cd, 0x0 },
+ { 0x00b9, 0x0 } },
+ // Ka Halant Ka
+ { { 0x0995, 0x09cd, 0x0995, 0x0 },
+ { 0x0109, 0x0 } },
+ // Ka MatraI
+ { { 0x0995, 0x09bf, 0x0 },
+ { 0x0095, 0x0073, 0x0 } },
+ // Ra Halant Ka
+ { { 0x09b0, 0x09cd, 0x0995, 0x0 },
+ { 0x0073, 0x00e1, 0x0 } },
+ // Ra Halant Ka MatraI
+ { { 0x09b0, 0x09cd, 0x0995, 0x09bf, 0x0 },
+ { 0x0095, 0x0073, 0x00e1, 0x0 } },
+ // MatraI
+ { { 0x09bf, 0x0 },
+ { 0x0095, 0x01c8, 0x0 } },
+ // Ka Nukta
+ { { 0x0995, 0x09bc, 0x0 },
+ { 0x0073, 0x0093, 0x0 } },
+ // Ka Halant Ra
+ { { 0x0995, 0x09cd, 0x09b0, 0x0 },
+ { 0x00e5, 0x0 } },
+ // Ka Halant Ra Halant Ka
{ { 0x995, 0x9cd, 0x9b0, 0x9cd, 0x995, 0x0 },
- { 0x234, 0x24e, 0x73, 0x0 } },
- // Ya + Halant
- { { 0x09af, 0x09cd, 0x0 },
- { 0x00d2, 0x0 } },
- // Da Halant Ya -> Da Ya-Phala
- { { 0x09a6, 0x09cd, 0x09af, 0x0 },
- { 0x0084, 0x00e2, 0x0 } },
- // A Halant Ya -> A Ya-phala
- { { 0x0985, 0x09cd, 0x09af, 0x0 },
- { 0x0067, 0x00e2, 0x0 } },
- // Na Halant Ka
- { { 0x09a8, 0x09cd, 0x0995, 0x0 },
- { 0x0188, 0x0 } },
- // Na Halant ZWNJ Ka
+ { 0x234, 0x24e, 0x73, 0x0 } },
+ // Ya + Halant
+ { { 0x09af, 0x09cd, 0x0 },
+ { 0x00d2, 0x0 } },
+ // Da Halant Ya -> Da Ya-Phala
+ { { 0x09a6, 0x09cd, 0x09af, 0x0 },
+ { 0x0084, 0x00e2, 0x0 } },
+ // A Halant Ya -> A Ya-phala
+ { { 0x0985, 0x09cd, 0x09af, 0x0 },
+ { 0x0067, 0x00e2, 0x0 } },
+ // Na Halant Ka
+ { { 0x09a8, 0x09cd, 0x0995, 0x0 },
+ { 0x0188, 0x0 } },
+ // Na Halant ZWNJ Ka
{ { 0x9a8, 0x9cd, 0x200c, 0x995, 0x0 },
- { 0xcc, 0x73, 0x0 } },
- // Na Halant ZWJ Ka
+ { 0xcc, 0x73, 0x0 } },
+ // Na Halant ZWJ Ka
{ { 0x9a8, 0x9cd, 0x200d, 0x995, 0x0 },
- { 0x247, 0x73, 0x0 } },
- // Ka Halant ZWNJ Ka
+ { 0x247, 0x73, 0x0 } },
+ // Ka Halant ZWNJ Ka
{ { 0x9a8, 0x9cd, 0x200d, 0x995, 0x0 },
- { 0x247, 0x73, 0x0 } },
- // Ka Halant ZWJ Ka
+ { 0x247, 0x73, 0x0 } },
+ // Ka Halant ZWJ Ka
{ { 0x9a8, 0x9cd, 0x200d, 0x995, 0x0 },
- { 0x247, 0x73, 0x0 } },
- // Na Halant Ra
- { { 0x09a8, 0x09cd, 0x09b0, 0x0 },
- { 0x00f8, 0x0 } },
- // Na Halant ZWNJ Ra
- { { 0x09a8, 0x09cd, 0x200c, 0x09b0, 0x0 },
- { 0xcc, 0x8d, 0x0 } },
- // Na Halant ZWJ Ra
+ { 0x247, 0x73, 0x0 } },
+ // Na Halant Ra
+ { { 0x09a8, 0x09cd, 0x09b0, 0x0 },
+ { 0x00f8, 0x0 } },
+ // Na Halant ZWNJ Ra
+ { { 0x09a8, 0x09cd, 0x200c, 0x09b0, 0x0 },
+ { 0xcc, 0x8d, 0x0 } },
+ // Na Halant ZWJ Ra
{ { 0x9a8, 0x9cd, 0x200d, 0x9b0, 0x0 },
- { 0x247, 0x8d, 0x0 } },
- // Na Halant Ba
- { { 0x09a8, 0x09cd, 0x09ac, 0x0 },
- { 0x0139, 0x0 } },
- // Na Halant ZWNJ Ba
+ { 0x247, 0x8d, 0x0 } },
+ // Na Halant Ba
+ { { 0x09a8, 0x09cd, 0x09ac, 0x0 },
+ { 0x0139, 0x0 } },
+ // Na Halant ZWNJ Ba
{ { 0x9a8, 0x9cd, 0x200c, 0x9ac, 0x0 },
- { 0xcc, 0x89, 0x0 } },
- // Na Halant ZWJ Ba
+ { 0xcc, 0x89, 0x0 } },
+ // Na Halant ZWJ Ba
{ { 0x9a8, 0x9cd, 0x200d, 0x9ac, 0x0 },
- { 0x247, 0x89, 0x0 } },
- // Na Halant Dha
- { { 0x09a8, 0x09cd, 0x09a7, 0x0 },
- { 0x0145, 0x0 } },
- // Na Halant ZWNJ Dha
- { { 0x09a8, 0x09cd, 0x200c, 0x09a7, 0x0 },
- { 0xcc, 0x85, 0x0 } },
- // Na Halant ZWJ Dha
- { { 0x09a8, 0x09cd, 0x200d, 0x09a7, 0x0 },
- { 0x247, 0x85, 0x0 } },
- // Ra Halant Ka MatraAU
+ { 0x247, 0x89, 0x0 } },
+ // Na Halant Dha
+ { { 0x09a8, 0x09cd, 0x09a7, 0x0 },
+ { 0x0145, 0x0 } },
+ // Na Halant ZWNJ Dha
+ { { 0x09a8, 0x09cd, 0x200c, 0x09a7, 0x0 },
+ { 0xcc, 0x85, 0x0 } },
+ // Na Halant ZWJ Dha
+ { { 0x09a8, 0x09cd, 0x200d, 0x09a7, 0x0 },
+ { 0x247, 0x85, 0x0 } },
+ // Ra Halant Ka MatraAU
{ { 0x9b0, 0x9cd, 0x995, 0x9cc, 0x0 },
- { 0x232, 0x73, 0xe1, 0xa0, 0x0 } },
- // Ra Halant Ba Halant Ba
- { { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 },
- { 0x013b, 0x00e1, 0x0 } },
-
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Mukti");
+ { 0x232, 0x73, 0xe1, 0xa0, 0x0 } },
+ // Ra Halant Ba Halant Ba
+ { { 0x09b0, 0x09cd, 0x09ac, 0x09cd, 0x09ac, 0x0 },
+ { 0x013b, 0x00e1, 0x0 } },
+
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Mukti");
}
{
if (QFontDatabase().families(QFontDatabase::Bengali).contains("Likhan")) {
QFont f("Likhan");
- const ShapeTable shape_table [] = {
+ const ShapeTable shape_table [] = {
{ { 0x9a8, 0x9cd, 0x9af, 0x0 },
{ 0x1ca, 0x0 } },
- { { 0x09b8, 0x09cd, 0x09af, 0x0 },
+ { { 0x09b8, 0x09cd, 0x09af, 0x0 },
{ 0x020e, 0x0 } },
- { { 0x09b6, 0x09cd, 0x09af, 0x0 },
+ { { 0x09b6, 0x09cd, 0x09af, 0x0 },
{ 0x01f4, 0x0 } },
- { { 0x09b7, 0x09cd, 0x09af, 0x0 },
+ { { 0x09b7, 0x09cd, 0x09af, 0x0 },
{ 0x01fe, 0x0 } },
- { { 0x09b0, 0x09cd, 0x09a8, 0x09cd, 0x200d, 0x0 },
+ { { 0x09b0, 0x09cd, 0x09a8, 0x09cd, 0x200d, 0x0 },
{ 0x10b, 0x167, 0x0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Likhan");
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Likhan");
}
}
@@ -555,14 +555,14 @@ void tst_QTextScriptEngine::gurmukhi_data()
{
if (QFontDatabase().families(QFontDatabase::Gurmukhi).contains("Lohit Punjabi")) {
QFont f("Lohit Punjabi");
- const ShapeTable shape_table [] = {
- { { 0xA15, 0xA4D, 0xa39, 0x0 },
- { 0x3b, 0x8b, 0x0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Lohit Punjabi");
+ const ShapeTable shape_table [] = {
+ { { 0xA15, 0xA4D, 0xa39, 0x0 },
+ { 0x3b, 0x8b, 0x0 } },
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Lohit Punjabi");
}
}
@@ -583,27 +583,27 @@ void tst_QTextScriptEngine::oriya_data()
{
if (QFontDatabase().families(QFontDatabase::Oriya).contains("utkal")) {
QFont f("utkal");
- const ShapeTable shape_table [] = {
+ const ShapeTable shape_table [] = {
{ { 0xb15, 0xb4d, 0xb24, 0xb4d, 0xb30, 0x0 },
- { 0x150, 0x125, 0x0 } },
+ { 0x150, 0x125, 0x0 } },
{ { 0xb24, 0xb4d, 0xb24, 0xb4d, 0xb2c, 0x0 },
- { 0x151, 0x120, 0x0 } },
+ { 0x151, 0x120, 0x0 } },
{ { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb2c, 0x0 },
- { 0x152, 0x120, 0x0 } },
+ { 0x152, 0x120, 0x0 } },
{ { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb2c, 0x0 },
- { 0x152, 0x120, 0x0 } },
+ { 0x152, 0x120, 0x0 } },
{ { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb30, 0x0 },
- { 0x176, 0x0 } },
+ { 0x176, 0x0 } },
{ { 0xb38, 0xb4d, 0xb24, 0xb4d, 0xb30, 0x0 },
- { 0x177, 0x0 } },
+ { 0x177, 0x0 } },
{ { 0xb28, 0xb4d, 0xb24, 0xb4d, 0xb30, 0xb4d, 0xb2f, 0x0 },
- { 0x176, 0x124, 0x0 } },
+ { 0x176, 0x124, 0x0 } },
{ {0}, {0} }
};
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find utkal");
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find utkal");
}
}
@@ -624,51 +624,51 @@ void tst_QTextScriptEngine::tamil_data()
{
if (QFontDatabase().families(QFontDatabase::Tamil).contains("AkrutiTml1")) {
QFont f("AkrutiTml1");
- const ShapeTable shape_table [] = {
- { { 0x0b95, 0x0bc2, 0x0 },
- { 0x004e, 0x0 } },
- { { 0x0bae, 0x0bc2, 0x0 },
- { 0x009e, 0x0 } },
- { { 0x0b9a, 0x0bc2, 0x0 },
- { 0x0058, 0x0 } },
- { { 0x0b99, 0x0bc2, 0x0 },
- { 0x0053, 0x0 } },
- { { 0x0bb0, 0x0bc2, 0x0 },
- { 0x00a8, 0x0 } },
- { { 0x0ba4, 0x0bc2, 0x0 },
- { 0x008e, 0x0 } },
- { { 0x0b9f, 0x0bc2, 0x0 },
- { 0x0062, 0x0 } },
- { { 0x0b95, 0x0bc6, 0x0 },
- { 0x000a, 0x0031, 0x0 } },
- { { 0x0b95, 0x0bca, 0x0 },
- { 0x000a, 0x0031, 0x0007, 0x0 } },
- { { 0x0b95, 0x0bc6, 0x0bbe, 0x0 },
- { 0x000a, 0x0031, 0x007, 0x0 } },
- { { 0x0b95, 0x0bcd, 0x0bb7, 0x0 },
- { 0x0049, 0x0 } },
- { { 0x0b95, 0x0bcd, 0x0bb7, 0x0bca, 0x0 },
- { 0x000a, 0x0049, 0x007, 0x0 } },
- { { 0x0b95, 0x0bcd, 0x0bb7, 0x0bc6, 0x0bbe, 0x0 },
- { 0x000a, 0x0049, 0x007, 0x0 } },
- { { 0x0b9f, 0x0bbf, 0x0 },
- { 0x005f, 0x0 } },
- { { 0x0b9f, 0x0bc0, 0x0 },
- { 0x0060, 0x0 } },
- { { 0x0bb2, 0x0bc0, 0x0 },
- { 0x00ab, 0x0 } },
- { { 0x0bb2, 0x0bbf, 0x0 },
- { 0x00aa, 0x0 } },
- { { 0x0bb0, 0x0bcd, 0x0 },
- { 0x00a4, 0x0 } },
- { { 0x0bb0, 0x0bbf, 0x0 },
- { 0x00a5, 0x0 } },
- { { 0x0bb0, 0x0bc0, 0x0 },
- { 0x00a6, 0x0 } },
- { { 0x0b83, 0x0 },
- { 0x0025, 0x0 } },
- { { 0x0b83, 0x0b95, 0x0 },
- { 0x0025, 0x0031, 0x0 } },
+ const ShapeTable shape_table [] = {
+ { { 0x0b95, 0x0bc2, 0x0 },
+ { 0x004e, 0x0 } },
+ { { 0x0bae, 0x0bc2, 0x0 },
+ { 0x009e, 0x0 } },
+ { { 0x0b9a, 0x0bc2, 0x0 },
+ { 0x0058, 0x0 } },
+ { { 0x0b99, 0x0bc2, 0x0 },
+ { 0x0053, 0x0 } },
+ { { 0x0bb0, 0x0bc2, 0x0 },
+ { 0x00a8, 0x0 } },
+ { { 0x0ba4, 0x0bc2, 0x0 },
+ { 0x008e, 0x0 } },
+ { { 0x0b9f, 0x0bc2, 0x0 },
+ { 0x0062, 0x0 } },
+ { { 0x0b95, 0x0bc6, 0x0 },
+ { 0x000a, 0x0031, 0x0 } },
+ { { 0x0b95, 0x0bca, 0x0 },
+ { 0x000a, 0x0031, 0x0007, 0x0 } },
+ { { 0x0b95, 0x0bc6, 0x0bbe, 0x0 },
+ { 0x000a, 0x0031, 0x007, 0x0 } },
+ { { 0x0b95, 0x0bcd, 0x0bb7, 0x0 },
+ { 0x0049, 0x0 } },
+ { { 0x0b95, 0x0bcd, 0x0bb7, 0x0bca, 0x0 },
+ { 0x000a, 0x0049, 0x007, 0x0 } },
+ { { 0x0b95, 0x0bcd, 0x0bb7, 0x0bc6, 0x0bbe, 0x0 },
+ { 0x000a, 0x0049, 0x007, 0x0 } },
+ { { 0x0b9f, 0x0bbf, 0x0 },
+ { 0x005f, 0x0 } },
+ { { 0x0b9f, 0x0bc0, 0x0 },
+ { 0x0060, 0x0 } },
+ { { 0x0bb2, 0x0bc0, 0x0 },
+ { 0x00ab, 0x0 } },
+ { { 0x0bb2, 0x0bbf, 0x0 },
+ { 0x00aa, 0x0 } },
+ { { 0x0bb0, 0x0bcd, 0x0 },
+ { 0x00a4, 0x0 } },
+ { { 0x0bb0, 0x0bbf, 0x0 },
+ { 0x00a5, 0x0 } },
+ { { 0x0bb0, 0x0bc0, 0x0 },
+ { 0x00a6, 0x0 } },
+ { { 0x0b83, 0x0 },
+ { 0x0025, 0x0 } },
+ { { 0x0b83, 0x0b95, 0x0 },
+ { 0x0025, 0x0031, 0x0 } },
{ { 0xb95, 0xbc6, 0xbbe, 0x0 },
{ 0xa, 0x31, 0x7, 0x0 } },
{ { 0xb95, 0xbc7, 0xbbe, 0x0 },
@@ -676,11 +676,11 @@ void tst_QTextScriptEngine::tamil_data()
{ { 0xb95, 0xbc6, 0xbd7, 0x0 },
{ 0xa, 0x31, 0x40, 0x0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find AkrutiTml1");
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find AkrutiTml1");
}
}
@@ -701,35 +701,35 @@ void tst_QTextScriptEngine::telugu_data()
{
if (QFontDatabase().families(QFontDatabase::Telugu).contains("Pothana2000")) {
QFont f("Pothana2000");
- const ShapeTable shape_table [] = {
+ const ShapeTable shape_table [] = {
{ { 0xc15, 0xc4d, 0x0 },
- { 0xbb, 0x0 } },
+ { 0xbb, 0x0 } },
{ { 0xc15, 0xc4d, 0xc37, 0x0 },
- { 0x4b, 0x0 } },
+ { 0x4b, 0x0 } },
{ { 0xc15, 0xc4d, 0xc37, 0xc4d, 0x0 },
- { 0xe0, 0x0 } },
+ { 0xe0, 0x0 } },
{ { 0xc15, 0xc4d, 0xc37, 0xc4d, 0xc23, 0x0 },
- { 0x4b, 0x91, 0x0 } },
+ { 0x4b, 0x91, 0x0 } },
{ { 0xc15, 0xc4d, 0xc30, 0x0 },
- { 0x5a, 0xb2, 0x0 } },
+ { 0x5a, 0xb2, 0x0 } },
{ { 0xc15, 0xc4d, 0xc30, 0xc4d, 0x0 },
- { 0xbb, 0xb2, 0x0 } },
+ { 0xbb, 0xb2, 0x0 } },
{ { 0xc15, 0xc4d, 0xc30, 0xc4d, 0xc15, 0x0 },
- { 0x5a, 0xb2, 0x83, 0x0 } },
+ { 0x5a, 0xb2, 0x83, 0x0 } },
{ { 0xc15, 0xc4d, 0xc30, 0xc3f, 0x0 },
- { 0xe2, 0xb2, 0x0 } },
+ { 0xe2, 0xb2, 0x0 } },
{ { 0xc15, 0xc4d, 0xc15, 0xc48, 0x0 },
{ 0xe6, 0xb3, 0x83, 0x0 } },
{ { 0xc15, 0xc4d, 0xc30, 0xc48, 0x0 },
- { 0xe6, 0xb3, 0x9f, 0x0 } },
+ { 0xe6, 0xb3, 0x9f, 0x0 } },
{ { 0xc15, 0xc46, 0xc56, 0x0 },
{ 0xe6, 0xb3, 0x0 } },
{ {0}, {0} }
};
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Pothana2000");
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Pothana2000");
}
}
@@ -750,42 +750,42 @@ void tst_QTextScriptEngine::kannada_data()
{
if (QFontDatabase().families(QFontDatabase::Kannada).contains("Sampige")) {
QFont f("Sampige");
- const ShapeTable shape_table [] = {
- { { 0x0ca8, 0x0ccd, 0x0ca8, 0x0 },
- { 0x0049, 0x00ba, 0x0 } },
- { { 0x0ca8, 0x0ccd, 0x0ca1, 0x0 },
- { 0x0049, 0x00b3, 0x0 } },
- { { 0x0caf, 0x0cc2, 0x0 },
- { 0x004f, 0x005d, 0x0 } },
- { { 0x0ce0, 0x0 },
- { 0x006a, 0x0 } },
- { { 0x0ce6, 0x0ce7, 0x0ce8, 0x0 },
- { 0x006b, 0x006c, 0x006d, 0x0 } },
- { { 0x0cb5, 0x0ccb, 0x0 },
- { 0x015f, 0x0067, 0x0 } },
- { { 0x0cb0, 0x0ccd, 0x0cae, 0x0 },
- { 0x004e, 0x0082, 0x0 } },
- { { 0x0cb0, 0x0ccd, 0x0c95, 0x0 },
- { 0x0036, 0x0082, 0x0 } },
- { { 0x0c95, 0x0ccd, 0x0cb0, 0x0 },
- { 0x0036, 0x00c1, 0x0 } },
- { { 0x0cb0, 0x0ccd, 0x200d, 0x0c95, 0x0 },
- { 0x0050, 0x00a7, 0x0 } },
-
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Sampige");
+ const ShapeTable shape_table [] = {
+ { { 0x0ca8, 0x0ccd, 0x0ca8, 0x0 },
+ { 0x0049, 0x00ba, 0x0 } },
+ { { 0x0ca8, 0x0ccd, 0x0ca1, 0x0 },
+ { 0x0049, 0x00b3, 0x0 } },
+ { { 0x0caf, 0x0cc2, 0x0 },
+ { 0x004f, 0x005d, 0x0 } },
+ { { 0x0ce0, 0x0 },
+ { 0x006a, 0x0 } },
+ { { 0x0ce6, 0x0ce7, 0x0ce8, 0x0 },
+ { 0x006b, 0x006c, 0x006d, 0x0 } },
+ { { 0x0cb5, 0x0ccb, 0x0 },
+ { 0x015f, 0x0067, 0x0 } },
+ { { 0x0cb0, 0x0ccd, 0x0cae, 0x0 },
+ { 0x004e, 0x0082, 0x0 } },
+ { { 0x0cb0, 0x0ccd, 0x0c95, 0x0 },
+ { 0x0036, 0x0082, 0x0 } },
+ { { 0x0c95, 0x0ccd, 0x0cb0, 0x0 },
+ { 0x0036, 0x00c1, 0x0 } },
+ { { 0x0cb0, 0x0ccd, 0x200d, 0x0c95, 0x0 },
+ { 0x0050, 0x00a7, 0x0 } },
+
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Sampige");
}
{
if (QFontDatabase().families(QFontDatabase::Kannada).contains("Tunga")) {
QFont f("Tunga");
- const ShapeTable shape_table [] = {
- { { 0x0cb7, 0x0cc6, 0x0 },
- { 0x00b0, 0x006c, 0x0 } },
- { { 0x0cb7, 0x0ccd, 0x0 },
- { 0x0163, 0x0 } },
+ const ShapeTable shape_table [] = {
+ { { 0x0cb7, 0x0cc6, 0x0 },
+ { 0x00b0, 0x006c, 0x0 } },
+ { { 0x0cb7, 0x0ccd, 0x0 },
+ { 0x0163, 0x0 } },
{ { 0xc95, 0xcbf, 0xcd5, 0x0 },
{ 0x114, 0x73, 0x0 } },
{ { 0xc95, 0xcc6, 0xcd5, 0x0 },
@@ -796,11 +796,11 @@ void tst_QTextScriptEngine::kannada_data()
{ 0x90, 0x6c, 0x69, 0x0 } },
{ { 0xc95, 0xcca, 0xcd5, 0x0 },
{ 0x90, 0x6c, 0x69, 0x73, 0x0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Tunga");
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Tunga");
}
}
@@ -821,33 +821,33 @@ void tst_QTextScriptEngine::malayalam_data()
{
if (QFontDatabase().families(QFontDatabase::Malayalam).contains("AkrutiMal2")) {
QFont f("AkrutiMal2");
- const ShapeTable shape_table [] = {
- { { 0x0d15, 0x0d46, 0x0 },
- { 0x005e, 0x0034, 0x0 } },
- { { 0x0d15, 0x0d47, 0x0 },
- { 0x005f, 0x0034, 0x0 } },
- { { 0x0d15, 0x0d4b, 0x0 },
- { 0x005f, 0x0034, 0x0058, 0x0 } },
- { { 0x0d15, 0x0d48, 0x0 },
- { 0x0060, 0x0034, 0x0 } },
- { { 0x0d15, 0x0d4a, 0x0 },
- { 0x005e, 0x0034, 0x0058, 0x0 } },
- { { 0x0d30, 0x0d4d, 0x0d15, 0x0 },
- { 0x009e, 0x0034, 0x0 } },
- { { 0x0d15, 0x0d4d, 0x0d35, 0x0 },
- { 0x0034, 0x007a, 0x0 } },
- { { 0x0d15, 0x0d4d, 0x0d2f, 0x0 },
- { 0x0034, 0x00a2, 0x0 } },
- { { 0x0d1f, 0x0d4d, 0x0d1f, 0x0 },
- { 0x0069, 0x0 } },
- { { 0x0d26, 0x0d4d, 0x0d26, 0x0 },
- { 0x0074, 0x0 } },
- { { 0x0d30, 0x0d4d, 0x0 },
- { 0x009e, 0x0 } },
- { { 0x0d30, 0x0d4d, 0x200c, 0x0 },
- { 0x009e, 0x0 } },
- { { 0x0d30, 0x0d4d, 0x200d, 0x0 },
- { 0x009e, 0x0 } },
+ const ShapeTable shape_table [] = {
+ { { 0x0d15, 0x0d46, 0x0 },
+ { 0x005e, 0x0034, 0x0 } },
+ { { 0x0d15, 0x0d47, 0x0 },
+ { 0x005f, 0x0034, 0x0 } },
+ { { 0x0d15, 0x0d4b, 0x0 },
+ { 0x005f, 0x0034, 0x0058, 0x0 } },
+ { { 0x0d15, 0x0d48, 0x0 },
+ { 0x0060, 0x0034, 0x0 } },
+ { { 0x0d15, 0x0d4a, 0x0 },
+ { 0x005e, 0x0034, 0x0058, 0x0 } },
+ { { 0x0d30, 0x0d4d, 0x0d15, 0x0 },
+ { 0x009e, 0x0034, 0x0 } },
+ { { 0x0d15, 0x0d4d, 0x0d35, 0x0 },
+ { 0x0034, 0x007a, 0x0 } },
+ { { 0x0d15, 0x0d4d, 0x0d2f, 0x0 },
+ { 0x0034, 0x00a2, 0x0 } },
+ { { 0x0d1f, 0x0d4d, 0x0d1f, 0x0 },
+ { 0x0069, 0x0 } },
+ { { 0x0d26, 0x0d4d, 0x0d26, 0x0 },
+ { 0x0074, 0x0 } },
+ { { 0x0d30, 0x0d4d, 0x0 },
+ { 0x009e, 0x0 } },
+ { { 0x0d30, 0x0d4d, 0x200c, 0x0 },
+ { 0x009e, 0x0 } },
+ { { 0x0d30, 0x0d4d, 0x200d, 0x0 },
+ { 0x009e, 0x0 } },
{ { 0xd15, 0xd46, 0xd3e, 0x0 },
{ 0x5e, 0x34, 0x58, 0x0 } },
{ { 0xd15, 0xd47, 0xd3e, 0x0 },
@@ -856,11 +856,11 @@ void tst_QTextScriptEngine::malayalam_data()
{ 0x5e, 0x34, 0x65, 0x0 } },
{ { 0xd15, 0xd57, 0x0 },
{ 0x34, 0x65, 0x0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find AkrutiMal2");
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find AkrutiMal2");
}
{
if (QFontDatabase().families(QFontDatabase::Malayalam).contains("Rachana")) {
@@ -879,7 +879,7 @@ void tst_QTextScriptEngine::malayalam_data()
{ {0}, {0} }
};
- prepareShapingTest(f, shape_table);
+ prepareShapingTest(f, shape_table);
} else
QSKIP("couldn't find Rachana");
}
@@ -917,7 +917,7 @@ void tst_QTextScriptEngine::sinhala_data()
{ 0x4a, 0x61, 0x42, 0x41, 0x0 } },
{ {0}, {0} }
};
- prepareShapingTest(f, shape_table);
+ prepareShapingTest(f, shape_table);
} else
QSKIP("couldn't find Malithi Web");
}
@@ -940,30 +940,30 @@ void tst_QTextScriptEngine::khmer_data()
{
if (QFontDatabase().families(QFontDatabase::Khmer).contains("Khmer OS")) {
QFont f("Khmer OS");
- const ShapeTable shape_table [] = {
- { { 0x179a, 0x17cd, 0x0 },
- { 0x24c, 0x27f, 0x0 } },
- { { 0x179f, 0x17c5, 0x0 },
- { 0x273, 0x203, 0x0 } },
- { { 0x1790, 0x17d2, 0x1784, 0x17c3, 0x0 },
- { 0x275, 0x242, 0x182, 0x0 } },
- { { 0x179a, 0x0 },
- { 0x24c, 0x0 } },
- { { 0x1781, 0x17d2, 0x1798, 0x17c2, 0x0 },
- { 0x274, 0x233, 0x197, 0x0 } },
- { { 0x1798, 0x17b6, 0x0 },
- { 0x1cb, 0x0 } },
- { { 0x179a, 0x17b8, 0x0 },
- { 0x24c, 0x26a, 0x0 } },
- { { 0x1787, 0x17b6, 0x0 },
- { 0x1ba, 0x0 } },
- { { 0x1798, 0x17d2, 0x1796, 0x17bb, 0x0 },
- { 0x24a, 0x195, 0x26d, 0x0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Khmer OS");
+ const ShapeTable shape_table [] = {
+ { { 0x179a, 0x17cd, 0x0 },
+ { 0x24c, 0x27f, 0x0 } },
+ { { 0x179f, 0x17c5, 0x0 },
+ { 0x273, 0x203, 0x0 } },
+ { { 0x1790, 0x17d2, 0x1784, 0x17c3, 0x0 },
+ { 0x275, 0x242, 0x182, 0x0 } },
+ { { 0x179a, 0x0 },
+ { 0x24c, 0x0 } },
+ { { 0x1781, 0x17d2, 0x1798, 0x17c2, 0x0 },
+ { 0x274, 0x233, 0x197, 0x0 } },
+ { { 0x1798, 0x17b6, 0x0 },
+ { 0x1cb, 0x0 } },
+ { { 0x179a, 0x17b8, 0x0 },
+ { 0x24c, 0x26a, 0x0 } },
+ { { 0x1787, 0x17b6, 0x0 },
+ { 0x1ba, 0x0 } },
+ { { 0x1798, 0x17d2, 0x1796, 0x17bb, 0x0 },
+ { 0x24a, 0x195, 0x26d, 0x0 } },
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Khmer OS");
}
}
@@ -984,14 +984,14 @@ void tst_QTextScriptEngine::linearB_data()
{
if (QFontDatabase().families(QFontDatabase::Any).contains("Penuturesu")) {
QFont f("Penuturesu");
- const ShapeTable shape_table [] = {
- { { 0xd800, 0xdc01, 0xd800, 0xdc02, 0xd800, 0xdc03, 0 },
+ const ShapeTable shape_table [] = {
+ { { 0xd800, 0xdc01, 0xd800, 0xdc02, 0xd800, 0xdc03, 0 },
{ 0x5, 0x6, 0x7, 0 } },
- { {0}, {0} }
- };
- prepareShapingTest(f, shape_table);
- } else
- QSKIP("couldn't find Penuturesu");
+ { {0}, {0} }
+ };
+ prepareShapingTest(f, shape_table);
+ } else
+ QSKIP("couldn't find Penuturesu");
}
}
@@ -1134,8 +1134,8 @@ void tst_QTextScriptEngine::mirroredChars()
s.append(QLatin1Char('('));
s.append(QLatin1Char(')'));
- HB_Glyph leftParenthesis;
- HB_Glyph rightParenthesis;
+ glyph_t leftParenthesis;
+ glyph_t rightParenthesis;
{
QTextLayout layout(s);
layout.setCacheEnabled(true);
diff --git a/tests/auto/gui/text/text.pro b/tests/auto/gui/text/text.pro
index 5055ab61a3..6c0def4d63 100644
--- a/tests/auto/gui/text/text.pro
+++ b/tests/auto/gui/text/text.pro
@@ -3,6 +3,7 @@ SUBDIRS=\
qabstracttextdocumentlayout \
qcssparser \
qfont \
+ qfontcache \
qfontdatabase \
qfontmetrics \
qglyphrun \
@@ -27,6 +28,7 @@ contains(QT_CONFIG, OdfWriter):SUBDIRS += qzip qtextodfwriter
win32:SUBDIRS -= qtextpiecetable
!contains(QT_CONFIG, private_tests): SUBDIRS -= \
+ qfontcache \
qcssparser \
qstatictext \
qtextlayout \
diff --git a/tests/auto/gui/util/qregularexpressionvalidator/.gitignore b/tests/auto/gui/util/qregularexpressionvalidator/.gitignore
new file mode 100644
index 0000000000..a4022144d5
--- /dev/null
+++ b/tests/auto/gui/util/qregularexpressionvalidator/.gitignore
@@ -0,0 +1 @@
+tst_qregularexpressionvalidator
diff --git a/tests/auto/gui/util/qregularexpressionvalidator/qregularexpressionvalidator.pro b/tests/auto/gui/util/qregularexpressionvalidator/qregularexpressionvalidator.pro
new file mode 100644
index 0000000000..1e8e50563e
--- /dev/null
+++ b/tests/auto/gui/util/qregularexpressionvalidator/qregularexpressionvalidator.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qregularexpressionvalidator
+SOURCES += tst_qregularexpressionvalidator.cpp
+QT += testlib
diff --git a/tests/auto/gui/util/qregularexpressionvalidator/tst_qregularexpressionvalidator.cpp b/tests/auto/gui/util/qregularexpressionvalidator/tst_qregularexpressionvalidator.cpp
new file mode 100644
index 0000000000..61d26104bd
--- /dev/null
+++ b/tests/auto/gui/util/qregularexpressionvalidator/tst_qregularexpressionvalidator.cpp
@@ -0,0 +1,120 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <QtGui/QRegularExpressionValidator>
+#include <QtTest/QtTest>
+
+class tst_QRegularExpressionValidator : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void validate_data();
+ void validate();
+};
+
+Q_DECLARE_METATYPE(QValidator::State)
+
+void tst_QRegularExpressionValidator::validate_data()
+{
+ QTest::addColumn<QRegularExpression>("re");
+ QTest::addColumn<QString>("value");
+ QTest::addColumn<QValidator::State>("state");
+
+ QTest::newRow("data0") << QRegularExpression("[1-9]\\d{0,3}") << QString("0") << QValidator::Invalid;
+ QTest::newRow("data1") << QRegularExpression("[1-9]\\d{0,3}") << QString("12345") << QValidator::Invalid;
+ QTest::newRow("data2") << QRegularExpression("[1-9]\\d{0,3}") << QString("1") << QValidator::Acceptable;
+
+ QTest::newRow("data3") << QRegularExpression("\\S+") << QString("myfile.txt") << QValidator::Acceptable;
+ QTest::newRow("data4") << QRegularExpression("\\S+") << QString("my file.txt") << QValidator::Invalid;
+
+ QTest::newRow("data5") << QRegularExpression("[A-C]\\d{5}[W-Z]") << QString("a12345Z") << QValidator::Invalid;
+ QTest::newRow("data6") << QRegularExpression("[A-C]\\d{5}[W-Z]") << QString("A12345Z") << QValidator::Acceptable;
+ QTest::newRow("data7") << QRegularExpression("[A-C]\\d{5}[W-Z]") << QString("B12") << QValidator::Intermediate;
+
+ QTest::newRow("data8") << QRegularExpression("read\\S?me(\\.(txt|asc|1st))?") << QString("readme") << QValidator::Acceptable;
+ QTest::newRow("data9") << QRegularExpression("read\\S?me(\\.(txt|asc|1st))?") << QString("read me.txt") << QValidator::Invalid;
+ QTest::newRow("data10") << QRegularExpression("read\\S?me(\\.(txt|asc|1st))?") << QString("readm") << QValidator::Intermediate;
+
+ QTest::newRow("data11") << QRegularExpression("read\\S?me(\\.(txt|asc|1st))?") << QString("read me.txt") << QValidator::Invalid;
+ QTest::newRow("data12") << QRegularExpression("read\\S?me(\\.(txt|asc|1st))?") << QString("readm") << QValidator::Intermediate;
+
+ QTest::newRow("data13") << QRegularExpression("\\w\\d\\d") << QString("A57") << QValidator::Acceptable;
+ QTest::newRow("data14") << QRegularExpression("\\w\\d\\d") << QString("E5") << QValidator::Intermediate;
+ QTest::newRow("data15") << QRegularExpression("\\w\\d\\d") << QString("+9") << QValidator::Invalid;
+
+ QTest::newRow("empty01") << QRegularExpression() << QString() << QValidator::Acceptable;
+ QTest::newRow("empty02") << QRegularExpression() << QString("test") << QValidator::Acceptable;
+}
+
+void tst_QRegularExpressionValidator::validate()
+{
+ QFETCH(QRegularExpression, re);
+ QFETCH(QString, value);
+
+ QRegularExpressionValidator rv;
+
+ // setting the same regexp won't emit signals
+ const int signalCount = (rv.regularExpression() == re) ? 0 : 1;
+
+ QSignalSpy spy(&rv, SIGNAL(regularExpressionChanged(QRegularExpression)));
+ QSignalSpy changedSpy(&rv, SIGNAL(changed()));
+
+ rv.setRegularExpression(re);
+ QCOMPARE(rv.regularExpression(), re);
+
+ int pos = -1;
+ QValidator::State result = rv.validate(value, pos);
+
+ QTEST(result, "state");
+ if (result == QValidator::Invalid)
+ QCOMPARE(pos, value.length());
+ else
+ QCOMPARE(pos, -1); // ensure pos is not modified if validate returned Acceptable or Intermediate
+
+ QCOMPARE(spy.count(), signalCount);
+ QCOMPARE(changedSpy.count(), signalCount);
+}
+
+QTEST_GUILESS_MAIN(tst_QRegularExpressionValidator)
+
+#include "tst_qregularexpressionvalidator.moc"
diff --git a/tests/auto/gui/util/util.pro b/tests/auto/gui/util/util.pro
index a0963980c9..f2c4515dc2 100644
--- a/tests/auto/gui/util/util.pro
+++ b/tests/auto/gui/util/util.pro
@@ -4,4 +4,5 @@ SUBDIRS= \
qdoublevalidator \
qintvalidator \
qregexpvalidator \
+ qregularexpressionvalidator \
diff --git a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
index d629b30ca6..7bb435952b 100644
--- a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
+++ b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
@@ -875,17 +875,17 @@ void tst_QHttpNetworkConnection::getMultipleWithPipeliningAndMultiplePriorities(
request = new QHttpNetworkRequest("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt", QHttpNetworkRequest::Get);
else
request = new QHttpNetworkRequest("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt", QHttpNetworkRequest::Head);
-
+
if (i % 2 || i % 3)
request->setPipeliningAllowed(true);
-
+
if (i % 3)
request->setPriority(QHttpNetworkRequest::HighPriority);
else if (i % 5)
request->setPriority(QHttpNetworkRequest::NormalPriority);
else if (i % 7)
request->setPriority(QHttpNetworkRequest::LowPriority);
-
+
requests.append(request);
QHttpNetworkReply *reply = connection.sendRequest(*request);
replies.append(reply);
diff --git a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
index 284201db29..4ee4b67ec0 100644
--- a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
+++ b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
@@ -451,7 +451,7 @@ void tst_QNetworkCookieJar::effectiveTLDs_data()
QTest::newRow("yes-wildcard1.5") << "anything.jm" << true;
QTest::newRow("yes-wildcard2") << "something.kh" << true;
QTest::newRow("yes-wildcard3") << "whatever.uk" << true;
- QTest::newRow("yes-wildcard4") << "anything.shizuoka.jp" << true;
+ QTest::newRow("yes-wildcard4") << "anything.sendai.jp" << true;
QTest::newRow("yes-wildcard5") << "foo.sch.uk" << true;
}
diff --git a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
index 55eb1fed82..54b560cc1b 100644
--- a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
+++ b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
@@ -79,7 +79,7 @@ private slots:
void oldCacheVersionFile_data();
void oldCacheVersionFile();
-
+
void sync();
void crashWhenParentingCache();
diff --git a/tests/auto/network/access/qnetworkreply/echo/main.cpp b/tests/auto/network/access/qnetworkreply/echo/main.cpp
index 6a4a959cdc..1f91c5da97 100644
--- a/tests/auto/network/access/qnetworkreply/echo/main.cpp
+++ b/tests/auto/network/access/qnetworkreply/echo/main.cpp
@@ -48,7 +48,7 @@ int main(int argc, char **)
printf("echos all its input to its output.\n");
return 1;
}
-
+
QFile file;
file.open(stdin, QFile::ReadWrite);
QByteArray data = file.readAll();
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 624ce5e800..bcc0641973 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -71,6 +71,9 @@
#ifndef QT_NO_SSL
#include <QtNetwork/qsslerror.h>
#include <QtNetwork/qsslconfiguration.h>
+#ifdef QT_BUILD_INTERNAL
+#include <QtNetwork/private/qsslconfiguration_p.h>
+#endif
#endif
#ifndef QT_NO_BEARERMANAGEMENT
#include <QtNetwork/qnetworkconfigmanager.h>
@@ -173,6 +176,9 @@ public Q_SLOTS:
void sslErrors(QNetworkReply*,const QList<QSslError> &);
void storeSslConfiguration();
void ignoreSslErrorListSlot(QNetworkReply *reply, const QList<QSslError> &);
+#ifdef QT_BUILD_INTERNAL
+ void sslSessionSharingHelperSlot();
+#endif
#endif
protected Q_SLOTS:
@@ -355,8 +361,13 @@ private Q_SLOTS:
void ignoreSslErrorsList();
void ignoreSslErrorsListWithSlot_data();
void ignoreSslErrorsListWithSlot();
+ void encrypted();
void sslConfiguration_data();
void sslConfiguration();
+#ifdef QT_BUILD_INTERNAL
+ void sslSessionSharing_data();
+ void sslSessionSharing();
+#endif
#endif
void getAndThenDeleteObject_data();
@@ -5857,6 +5868,24 @@ void tst_QNetworkReply::sslConfiguration_data()
QTest::newRow("secure") << conf << true;
}
+void tst_QNetworkReply::encrypted()
+{
+ qDebug() << QtNetworkSettings::serverName();
+ QUrl url("https://" + QtNetworkSettings::serverName());
+ QNetworkRequest request(url);
+ QNetworkReply *reply = manager.get(request);
+ reply->ignoreSslErrors();
+
+ QSignalSpy spy(reply, SIGNAL(encrypted()));
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(20);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(spy.count(), 1);
+
+ reply->deleteLater();
+}
+
void tst_QNetworkReply::sslConfiguration()
{
QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/index.html"));
@@ -5871,6 +5900,73 @@ void tst_QNetworkReply::sslConfiguration()
QCOMPARE(reply->error(), expectedError);
}
+#ifdef QT_BUILD_INTERNAL
+
+void tst_QNetworkReply::sslSessionSharing_data()
+{
+ QTest::addColumn<bool>("sessionSharingEnabled");
+ QTest::newRow("enabled") << true;
+ QTest::newRow("disabled") << false;
+}
+
+void tst_QNetworkReply::sslSessionSharing()
+{
+ QString urlString("https://" + QtNetworkSettings::serverName());
+ QList<QNetworkReplyPtr> replies;
+
+ // warm up SSL session cache
+ QNetworkRequest warmupRequest(urlString);
+ QFETCH(bool, sessionSharingEnabled);
+ warmupRequest.setAttribute(QNetworkRequest::User, sessionSharingEnabled); // so we can read it from the slot
+ if (! sessionSharingEnabled) {
+ QSslConfiguration configuration(QSslConfiguration::defaultConfiguration());
+ configuration.setSslOption(QSsl::SslOptionDisableSessionTickets, true);
+ warmupRequest.setSslConfiguration(configuration);
+ }
+ QNetworkReply *reply = manager.get(warmupRequest);
+ reply->ignoreSslErrors();
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(20);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ reply->deleteLater();
+
+ // now send several requests at the same time, so we open more sockets and reuse the SSL session
+ for (int a = 0; a < 6; a++) {
+ QNetworkRequest request(warmupRequest);
+ replies.append(QNetworkReplyPtr(manager.get(request)));
+ connect(replies.at(a), SIGNAL(finished()), this, SLOT(sslSessionSharingHelperSlot()));
+ }
+ QTestEventLoop::instance().enterLoop(20);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+void tst_QNetworkReply::sslSessionSharingHelperSlot()
+{
+ static int count = 0;
+
+ // check that SSL session sharing was used in at least one of the replies
+ static bool sslSessionSharingWasUsed = false;
+ QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender());
+ bool sslSessionSharingWasUsedInReply = QSslConfigurationPrivate::peerSessionWasShared(reply->sslConfiguration());
+ if (sslSessionSharingWasUsedInReply)
+ sslSessionSharingWasUsed = true;
+
+ QString urlQueryString = reply->url().query();
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ count++;
+
+ if (count == 6) { // all replies have finished
+ QTestEventLoop::instance().exitLoop();
+ bool sessionSharingWasEnabled = reply->request().attribute(QNetworkRequest::User).toBool();
+ QCOMPARE(sslSessionSharingWasUsed, sessionSharingWasEnabled);
+ count = 0; // reset for next row
+ sslSessionSharingWasUsed = false; // reset for next row
+ }
+}
+
+#endif // QT_BUILD_INTERNAL
#endif // QT_NO_SSL
void tst_QNetworkReply::getAndThenDeleteObject_data()
diff --git a/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp b/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
index a38b5f5338..f4cbfbe8f2 100644
--- a/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
+++ b/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
@@ -96,7 +96,7 @@ void tst_QNetworkConfiguration::invalidPoint()
void tst_QNetworkConfiguration::comparison()
{
//test copy constructor and assignment operator
- //compare invalid connection points
+ //compare invalid connection points
QNetworkConfiguration pt1;
QVERIFY(!pt1.isValid());
QVERIFY(pt1.type() == QNetworkConfiguration::Invalid);
@@ -110,7 +110,7 @@ void tst_QNetworkConfiguration::comparison()
QVERIFY(pt1.state() == pt2.state());
QVERIFY(pt1.purpose() == pt2.purpose());
-
+
QNetworkConfiguration pt3;
pt3 = pt1;
QVERIFY(pt1==pt3);
@@ -170,12 +170,12 @@ void tst_QNetworkConfiguration::isRoamingAvailable()
{
QNetworkConfigurationManager manager;
QList<QNetworkConfiguration> configs = manager.allConfigurations();
-
+
//force update to get maximum list
QSignalSpy spy(&manager, SIGNAL(updateCompleted()));
manager.updateConfigurations(); //initiate scans
QTRY_VERIFY_WITH_TIMEOUT(spy.count() == 1, TestTimeOut); //wait for scan to complete
-
+
foreach(QNetworkConfiguration c, configs)
{
QVERIFY(QNetworkConfiguration::UserChoice != c.type());
diff --git a/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp b/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
index 835b9aecfb..18aba51fe6 100644
--- a/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
+++ b/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
@@ -64,7 +64,7 @@ private slots:
#ifndef QT_NO_BEARERMANAGEMENT
void printConfigurationDetails(const QNetworkConfiguration& p)
{
- qDebug() << p.name() <<": isvalid->" <<p.isValid() << " type->"<< p.type() <<
+ qDebug() << p.name() <<": isvalid->" <<p.isValid() << " type->"<< p.type() <<
" roaming->" << p.isRoamingAvailable() << "identifier->" << p.identifier() <<
" purpose->" << p.purpose() << " state->" << p.state();
}
@@ -189,7 +189,7 @@ void tst_QNetworkConfigurationManager::configurationFromIdentifier()
QSignalSpy spy(&manager, SIGNAL(updateCompleted()));
manager.updateConfigurations(); //initiate scans
QTRY_VERIFY_WITH_TIMEOUT(spy.count() == 1, TestTimeOut); //wait for scan to complete
-
+
QList<QNetworkConfiguration> configs = manager.allConfigurations();
foreach(QNetworkConfiguration c, configs) {
diff --git a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
index 529f45f001..5dede11e5b 100644
--- a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
+++ b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
@@ -139,7 +139,7 @@ void tst_QNetworkSession::cleanupTestCase()
}
// Robustness test for calling interfaces in nonsense order / with nonsense parameters
-void tst_QNetworkSession::robustnessBombing()
+void tst_QNetworkSession::robustnessBombing()
{
QNetworkConfigurationManager mgr;
QNetworkSession testSession(mgr.defaultConfiguration());
@@ -199,18 +199,18 @@ void tst_QNetworkSession::invalidSession()
QVERIFY(!session.isOpen());
QVERIFY(session.state() == QNetworkSession::Invalid);
QVERIFY(session.error() == QNetworkSession::InvalidConfigurationError);
-
+
// 2. Verify that opening session with invalid configuration both 1) emits invalidconfigurationerror and 2) sets session's state as invalid.
QSignalSpy errorSpy(&session, SIGNAL(error(QNetworkSession::SessionError)));
session.open();
session.waitForOpened(1000); // Should bail out right away
- QVERIFY(errorSpy.count() == 1);
+ QVERIFY(errorSpy.count() == 1);
QNetworkSession::SessionError error =
qvariant_cast<QNetworkSession::SessionError> (errorSpy.first().at(0));
QVERIFY(error == QNetworkSession::InvalidConfigurationError);
QVERIFY(session.error() == QNetworkSession::InvalidConfigurationError);
QVERIFY(session.state() == QNetworkSession::Invalid);
-
+
#ifdef QNETWORKSESSION_MANUAL_TESTS
QNetworkConfiguration invalidatedConfig = suitableConfiguration("WLAN",QNetworkConfiguration::InternetAccessPoint);
@@ -354,7 +354,7 @@ void tst_QNetworkSession::repeatedOpenClose()
QNetworkSession permanentSession(config);
if (!openSession(&permanentSession) || !closeSession(&permanentSession))
QSKIP("Unable to open/close session, skipping this round of repeated open-close test.");
- for (int i = 0; i < repeatTimes; i++) {
+ for (int i = 0; i < repeatTimes; i++) {
qDebug() << "Opening, loop number " << i;
QVERIFY(openSession(&permanentSession));
qDebug() << "Closing, loop number, then waiting 5 seconds: " << i;
@@ -469,7 +469,7 @@ void tst_QNetworkSession::userChoiceSession()
QVERIFY(activeConfiguration.isValid());
QVERIFY(activeConfiguration.type() == QNetworkConfiguration::InternetAccessPoint);
-
+
//resetting ActiveConfiguration is ignored (read only property)
session.setSessionProperty("ActiveConfiguration", testIdentifier);
QVERIFY(session.sessionProperty("ActiveConfiguration").toString() != testIdentifier);
@@ -612,7 +612,7 @@ void tst_QNetworkSession::sessionOpenCloseStop()
QVERIFY(session.error() == QNetworkSession::UnknownSessionError);
session2.open();
-
+
QTRY_VERIFY_WITH_TIMEOUT(!sessionOpenedSpy2.isEmpty() || !errorSpy2.isEmpty(), TestTimeOut);
if (errorSpy2.isEmpty()) {
@@ -666,10 +666,10 @@ void tst_QNetworkSession::sessionOpenCloseStop()
QVERIFY(errorSpy.isEmpty());
QVERIFY(errorSpy2.isEmpty());
-
- // Wait for Disconnected state
+
+ // Wait for Disconnected state
QTRY_NOOP(session2.state() == QNetworkSession::Disconnected);
-
+
if (expectStateChange)
QTRY_VERIFY_WITH_TIMEOUT(stateChangedSpy2.count() >= 1 || !errorSpy2.isEmpty(), TestTimeOut);
@@ -722,14 +722,14 @@ void tst_QNetworkSession::sessionOpenCloseStop()
} else {
QFAIL("Unexpected amount of state changes when roaming.");
}
-
+
QTRY_VERIFY_WITH_TIMEOUT(session.state() == QNetworkSession::Roaming ||
session.state() == QNetworkSession::Connected ||
session.state() == QNetworkSession::Disconnected, TestTimeOut);
-
+
QTRY_VERIFY_WITH_TIMEOUT(stateChangedSpy.count() > 0, TestTimeOut);
- state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(stateChangedSpy.count() - 1).at(0));
-
+ state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(stateChangedSpy.count() - 1).at(0));
+
for (int i = 0; i < stateChangedSpy.count(); i++) {
QNetworkSession::State state_temp =
qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(i).at(0));
@@ -753,7 +753,7 @@ void tst_QNetworkSession::sessionOpenCloseStop()
QTRY_VERIFY_WITH_TIMEOUT(errorSpy.isEmpty(),TestTimeOut);
if (stateChangedSpy.count() > 1) {
- state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(stateChangedSpy.count() - 2).at(0));
+ state = qvariant_cast<QNetworkSession::State>(stateChangedSpy.at(stateChangedSpy.count() - 2).at(0));
QVERIFY(state == QNetworkSession::Roaming);
}
roamedSuccessfully = true;
@@ -778,7 +778,7 @@ void tst_QNetworkSession::sessionOpenCloseStop()
QVERIFY(!errorSpy.isEmpty());
} else {
QTest::qWait(2000); // Wait awhile to get all signals from platform
-
+
if (stateChangedSpy2.count() == 2) {
QNetworkSession::State state =
qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(0).at(0));
@@ -797,7 +797,7 @@ void tst_QNetworkSession::sessionOpenCloseStop()
QNetworkSession::State state =
qvariant_cast<QNetworkSession::State>(stateChangedSpy2.at(stateChangedSpy2.count() - 1).at(0));
- QVERIFY(state == QNetworkSession::Disconnected);
+ QVERIFY(state == QNetworkSession::Disconnected);
}
}
@@ -920,7 +920,7 @@ void tst_QNetworkSession::outOfProcessSession()
// Cannot read/write to processes on WinCE.
// Easiest alternative is to use sockets for IPC.
QLocalServer oopServer;
- // First remove possible earlier listening address which would cause listen to fail
+ // First remove possible earlier listening address which would cause listen to fail
// (e.g. previously abruptly ended unit test might cause this)
QLocalServer::removeServer("tst_qnetworksession");
oopServer.listen("tst_qnetworksession");
@@ -1034,7 +1034,7 @@ QNetworkConfiguration suitableConfiguration(QString bearerType, QNetworkConfigur
// qDebug() << "Dumping config because bearer mismatches (cellular): " << config.name();
discoveredConfigs.removeOne(config);
}
- } else if ((config.type() == QNetworkConfiguration::InternetAccessPoint) &&
+ } else if ((config.type() == QNetworkConfiguration::InternetAccessPoint) &&
bearerType != config.bearerTypeName()) {
// qDebug() << "Dumping config because bearer mismatches (WLAN): " << config.name();
discoveredConfigs.removeOne(config);
@@ -1109,12 +1109,12 @@ bool openSession(QNetworkSession *session) {
qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::error() - signal was detected.");
result = false;
}
- if (sessionInitState != QNetworkSession::Connected &&
+ if (sessionInitState != QNetworkSession::Connected &&
stateChangeSpy.isEmpty()) {
qDebug("tst_QNetworkSession::openSession() failure: QNetworkSession::stateChanged() - signals not detected.");
result = false;
}
- if (configInitState != QNetworkConfiguration::Active &&
+ if (configInitState != QNetworkConfiguration::Active &&
configChangeSpy.isEmpty()) {
qDebug("tst_QNetworkSession::openSession() failure: QNetworkConfigurationManager::configurationChanged() - signals not detected.");
result = false;
@@ -1132,7 +1132,7 @@ bool openSession(QNetworkSession *session) {
qDebug() << "tst_QNetworkSession::openSession() name of the configuration is: " << session->configuration().name();
qDebug() << "tst_QNetworkSession::openSession() configuration state is: " << session->configuration().state();
qDebug() << "tst_QNetworkSession::openSession() session state is: " << session->state();
-
+
return result;
}
@@ -1146,26 +1146,26 @@ bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration) {
qDebug("tst_QNetworkSession::closeSession() failure: NULL session given");
return false;
}
-
+
qDebug() << "tst_QNetworkSession::closeSession() name of the configuration to be closed: " << session->configuration().name();
qDebug() << "tst_QNetworkSession::closeSession() state of the configuration to be closed: " << session->configuration().state();
qDebug() << "tst_QNetworkSession::closeSession() state of the session to be closed: " << session->state();
-
- if (session->state() != QNetworkSession::Connected ||
+
+ if (session->state() != QNetworkSession::Connected ||
!session->isOpen()) {
qDebug("tst_QNetworkSession::closeSession() failure: session is not opened.");
return false;
- }
+ }
QNetworkConfigurationManager mgr;
QSignalSpy sessionClosedSpy(session, SIGNAL(closed()));
QSignalSpy sessionStateChangedSpy(session, SIGNAL(stateChanged(QNetworkSession::State)));
QSignalSpy sessionErrorSpy(session, SIGNAL(error(QNetworkSession::SessionError)));
QSignalSpy configChangeSpy(&mgr, SIGNAL(configurationChanged(QNetworkConfiguration)));
-
+
bool result = true;
session->close();
QTest::qWait(5000); // Wait a moment so that all signals are propagated
-
+
if (!sessionErrorSpy.isEmpty()) {
qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::error() received.");
result = false;
@@ -1174,7 +1174,7 @@ bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration) {
qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::closed() signal not received.");
result = false;
}
- if (lastSessionOnConfiguration &&
+ if (lastSessionOnConfiguration &&
sessionStateChangedSpy.isEmpty()) {
qDebug("tst_QNetworkSession::closeSession() failure: QNetworkSession::stateChanged() signals not received.");
result = false;
@@ -1199,7 +1199,7 @@ bool closeSession(QNetworkSession *session, bool lastSessionOnConfiguration) {
qDebug() << "tst_QNetworkSession::closeSession() closing session failed.";
} else {
qDebug() << "tst_QNetworkSession::closeSession() closing session succeeded.";
- }
+ }
qDebug() << "tst_QNetworkSession::closeSession() name of the configuration is: " << session->configuration().name();
qDebug() << "tst_QNetworkSession::closeSession() configuration state is: " << session->configuration().state();
qDebug() << "tst_QNetworkSession::closeSession() session state is: " << session->state();
diff --git a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
index 3b4af27d4e..dd9202c748 100644
--- a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
+++ b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
@@ -266,7 +266,7 @@ void tst_QHostAddress::specialAddresses_data()
QTest::newRow("null_1") << QString("") << (int)QHostAddress::Null << true;
QTest::newRow("null_2") << QString("bjarne") << (int)QHostAddress::Null << true;
-
+
QTest::newRow("compare_from_null") << QString("") << (int)QHostAddress::Broadcast << false;
QTest::newRow("broadcast_1") << QString("255.255.255.255") << (int)QHostAddress::Any << false;
diff --git a/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp b/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
index 90e6797117..d57a99a758 100644
--- a/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
+++ b/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
@@ -105,7 +105,7 @@ QString tst_QNetworkProxyFactory::formatProxyName(const QNetworkProxy & proxy) c
{
QString proxyName;
if (!proxy.user().isNull())
- proxyName.append("%1:%2@").arg(proxy.user(), proxy.password());
+ proxyName.append(QString("%1:%2@").arg(proxy.user(), proxy.password()));
proxyName.append(QString("%1:%2").arg(proxy.hostName()).arg(proxy.port()));
proxyName.append(QString(" (type=%1, capabilities=%2)").arg(proxy.type()).arg(proxy.capabilities()));
diff --git a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
index 0ffcb60090..159f276c77 100644
--- a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
+++ b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
@@ -986,7 +986,7 @@ public:
if (!socket.waitForConnected(3000))
exec();
- connect(&socket, SIGNAL(bytesWritten(qint64)),
+ connect(&socket, SIGNAL(bytesWritten(qint64)),
this, SLOT(bytesWritten(qint64)), Qt::QueuedConnection);
socket.write("testing\n");
exec();
@@ -1004,9 +1004,9 @@ private:
signal.
Create a thread that will write to a socket.
- If the bytesWritten(qint64) signal is generated,
+ If the bytesWritten(qint64) signal is generated,
the slot connected to it will exit the thread,
- indicating test success.
+ indicating test success.
*/
void tst_QLocalSocket::bytesWrittenSignal()
diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp b/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
index 27f6640bdc..15ce1a0a12 100644
--- a/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
@@ -48,7 +48,7 @@
#include "Test.h"
//------------------------------------------------------------------------------
-My4Socket::My4Socket(QObject *parent)
+My4Socket::My4Socket(QObject *parent)
: QTcpSocket(parent), safeShutDown(false)
{
connect(this, SIGNAL(readyRead()), this, SLOT(read()));
@@ -74,7 +74,7 @@ void My4Socket::read(void)
if (reply == 42)
++reply;
}
-
+
// Reply with a bigger number
sendTest(reply);
}
diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp b/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
index 8bbe351b45..4376e872e8 100644
--- a/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
@@ -62,6 +62,6 @@ int main(int argc, char **argv)
}
Test test(type);
-
+
return app.exec();
}
diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
index a1082714f5..2b9dfc5081 100644
--- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
+++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
@@ -238,7 +238,6 @@ private:
mutable int proxyAuthCalled;
- bool gotClosedSignal;
int numConnections;
static int loopLevel;
diff --git a/tests/auto/network/socket/qudpsocket/clientserver/main.cpp b/tests/auto/network/socket/qudpsocket/clientserver/main.cpp
index 233d9d1a1c..645aacf22e 100644
--- a/tests/auto/network/socket/qudpsocket/clientserver/main.cpp
+++ b/tests/auto/network/socket/qudpsocket/clientserver/main.cpp
@@ -79,7 +79,7 @@ public:
}
fflush(stdout);
- connect(this, SIGNAL(readyRead()), this, SLOT(readData()));
+ connect(this, SIGNAL(readyRead()), this, SLOT(readTestData()));
}
protected:
@@ -101,7 +101,7 @@ protected:
}
private slots:
- void readData()
+ void readTestData()
{
printf("readData()\n");
switch (type) {
diff --git a/tests/auto/network/socket/qudpsocket/udpServer/main.cpp b/tests/auto/network/socket/qudpsocket/udpServer/main.cpp
index 6d866c2aa7..47adac3e77 100644
--- a/tests/auto/network/socket/qudpsocket/udpServer/main.cpp
+++ b/tests/auto/network/socket/qudpsocket/udpServer/main.cpp
@@ -68,10 +68,10 @@ private slots:
qint64 bytes = serverSocket.readDatagram(data, sizeof(data), &senderAddress, &senderPort);
if (bytes == 1 && data[0] == '\0')
QCoreApplication::instance()->quit();
-
+
for (int i = 0; i < bytes; ++i)
data[i] += 1;
- serverSocket.writeDatagram(data, bytes, senderAddress, senderPort);
+ serverSocket.writeDatagram(data, bytes, senderAddress, senderPort);
}
private:
@@ -83,7 +83,7 @@ int main(int argc, char **argv)
QCoreApplication app(argc, argv);
Server server(app.arguments().at(1).toInt());
-
+
return app.exec();
}
diff --git a/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp b/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp
index 4f375c8ab3..73537d124f 100644
--- a/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp
+++ b/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp
@@ -81,7 +81,7 @@ public slots:
private slots:
void constructing();
#endif
-
+
private:
static int loopLevel;
};
diff --git a/tests/auto/network/ssl/qsslsocket/certs/ca.crt b/tests/auto/network/ssl/qsslsocket/certs/ca.crt
new file mode 100644
index 0000000000..5cbe8ef726
--- /dev/null
+++ b/tests/auto/network/ssl/qsslsocket/certs/ca.crt
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDpTCCAl2gAwIBAgIQAKraD9BoqaSa75qOqcP7ZTANBgkqhkiG9w0BAQUFADA8
+MQswCQYDVQQGEwJHQjEZMBcGA1UEChMQV2VzdHBvaW50IENBIEtleTESMBAGA1UE
+ChMJV2VzdHBvaW50MB4XDTEzMDIxNjE2NTMwOFoXDTIzMDIxNjE2NTMwOFowPDEL
+MAkGA1UEBhMCR0IxGTAXBgNVBAoTEFdlc3Rwb2ludCBDQSBLZXkxEjAQBgNVBAoT
+CVdlc3Rwb2ludDCCAVIwDQYJKoZIhvcNAQEBBQADggE/ADCCAToCggExAJv0H92j
+WjDB9h1DmSQzt772IPSirpE82sN9ls5J19TJcPnw49LdUUqkELJkpS1ty2hYPdUw
+7q3n00D+nzS+rt1QIDSKwDVoqeIyFZw4h0ULbASErfy51xBjVIr6NNoiqazp59wQ
+RDvqps7of+b/NcbOh73MsiYi8T5OoI4Quv9rMBefQTAI3d2NRQ4GUzS6Hzh2INOc
+4twApTDYY+yrU8IalXttIOVdKJZTHeTCdIXD3HMfHCkzyELz8rCI1/wDEp8zyoqF
+/tpBStZ5LUSrlRRM7PegqcnM+aojXyrEiXBvPuqO7tabU3nsfix9+8+7GDweDXsP
+OUHv+ahGNTUya7hBDaQmVk3/5hbig9kQlNiOcvcdnYYyJqiXhvjPPzOBbRaFNvBT
+uG/ehHNHYsdhEBkCAwEAAaNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8E
+BQMDBwYAMB0GA1UdDgQWBBSUJzi1uYQUxqb3Nr33LOLCaUUTyTANBgkqhkiG9w0B
+AQUFAAOCATEAPeGh2GiIhT3cii3DU8ihd5TmnEstuHKz2FwHDChmen0zxE8lf08/
+onL1yIeaxbDA8KwZnv71/zZHJv02sPtIMUfuXQc0wOIFjDf0ngc6xIBuU7FUpLxF
+2dK7g9OsiNeC7L/ZemRXgpJURdNF2Ujge9/H9yfpHFBXZztmaWir+TXc5g3PKIu6
+97t75Og+stPhTcSlph8ZHYep08b2uthCfcnuIRGeDW9LkfR8VugnuUf7GoIlqSTs
+SR6bNuyTnnCHQMJzbsQ472+ag3aZS5HzoR8wyGiPmpc43lQM5ZEDrWGu8bub2gKa
+/+KeqHd0wnl7Y5cxnmAptQjxvzBXX/pl4sWczesiGcYm5z5mabp4CY09Y8JtrJZT
+IJodXy9ykRmEurgtRoRVc1aSp+xfV725bQ==
+-----END CERTIFICATE-----
diff --git a/tests/auto/network/ssl/qsslsocket/certs/inter.crt b/tests/auto/network/ssl/qsslsocket/certs/inter.crt
new file mode 100644
index 0000000000..4e1d67c3e0
--- /dev/null
+++ b/tests/auto/network/ssl/qsslsocket/certs/inter.crt
@@ -0,0 +1,22 @@
+-----BEGIN CERTIFICATE-----
+MIIDvDCCAnSgAwIBAgIQO+uZxerYC10Ll11PBnVL4TANBgkqhkiG9w0BAQUFADA8
+MQswCQYDVQQGEwJHQjEZMBcGA1UEChMQV2VzdHBvaW50IENBIEtleTESMBAGA1UE
+ChMJV2VzdHBvaW50MB4XDTEzMDIxNjE2NTMwOFoXDTIzMDIxNjE2NTMwOFowMjEL
+MAkGA1UEBhMCR0IxIzAhBgNVBAoTGldlc3Rwb2ludCBJbnRlcm1lZGlhdGUgS2V5
+MIIBUjANBgkqhkiG9w0BAQEFAAOCAT8AMIIBOgKCATEAsR4tRskg2IFfQFMfGBJ1
+eqlrNejANw0oM6k5HlEB8uFA9qeyAzmflwQUPoJ55KRQ/gVHTOBdWrtgGgPMiekF
+1Q36Ry1elwbAl4a+LZ6qsc9ASipvk8HirKpt1v5L9hG+aI4yDxyvjNztFtg5R4P5
+zqsh/WwhCgsYmEVfcSDbhUjqoqxGRLaZxPKO+IMCNFrjZqi0yxc8f6Un4G5SQzHA
+4szi/ezcITnAFYWxHG2yaed4hawpxNS1WXabk2rzCi0pWeIcHuIczaCfZ7ElRcqV
+VNNXbGTtUDlfIsh6FAVI5kTUDcPV27uf6BmHuFOu/R9Tjni25+vBFvohwQh7ZwCX
+5COXnfkJLPkJQQEFVQv8nS27ht/vmyoKjERUeiuMd+hFcN5zl7bS5A2JCgi7erlP
+ZQIDAQABo2QwYjAPBgNVHRMBAf8EBTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwHQYD
+VR0OBBYEFGn5shQ0SeTcc3x/cNu6TkoV0bPmMB8GA1UdIwQYMBaAFJQnOLW5hBTG
+pvc2vfcs4sJpRRPJMA0GCSqGSIb3DQEBBQUAA4IBMQAVDS0enQQ1FL0d92xOFfwx
+mjcNPz9oO7jMyEVxAs2eR2QD+xZ3Xj4gAiUEp40aGieDcLv+dg+cmuBFWF61IYSR
+UyuoakVm08VDcLAwUzU+xtSvJiSSROb0GsAnVsYZj4TYlvKDplqfapOYaiIkwF+c
+iE4n7G0hQW9fzqO+n3FGtBD8YUjghRqLggeRVJ2+8S3Bm8cfx8xPpRIO3ksA6opn
+CORRGuzetDHihbks59mkoY3GqKFgBOyrC3kG07nv5wtKjdKDtmD/kS/SAc4fIXKy
+Uruq2uXNf/1BUgF5gFGRyj22yB2D0763fJJpl5nqcLrL5RmnVObQKZGhE2VsRTV0
+untj+AmiJivhiAjjkHfw3XDf8tuL7D4pTmEkGgl5xl23fyeTIuygDCLT8fRD3ZqQ
+-----END CERTIFICATE-----
diff --git a/tests/auto/network/ssl/qsslsocket/certs/leaf.crt b/tests/auto/network/ssl/qsslsocket/certs/leaf.crt
new file mode 100644
index 0000000000..4a7dc40540
--- /dev/null
+++ b/tests/auto/network/ssl/qsslsocket/certs/leaf.crt
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID3zCCApegAwIBAgIQEKCtd1j2bq5Gk6ND+VmKnjANBgkqhkiG9w0BAQUFADAy
+MQswCQYDVQQGEwJHQjEjMCEGA1UEChMaV2VzdHBvaW50IEludGVybWVkaWF0ZSBL
+ZXkwHhcNMTMwMjE2MTY1MzA4WhcNMjMwMjE2MTY1MzA4WjA1MQswCQYDVQQGEwJH
+QjESMBAGA1UEChMJV2VzdHBvaW50MRIwEAYDVQQDEwkxMjcuMC4wLjEwggFSMA0G
+CSqGSIb3DQEBAQUAA4IBPwAwggE6AoIBMQC7EIWIzb7XCfmQQ1KFdZ5E9f49eNK/
+KvsXYfq/iV29K1cz2hUyvfdKgyU5F/+BOPQKQ5zdWn1CraZosFv/ibuO3mhRpMfB
+SfNn3rfdrE7WtA0wgT2YNIN0L4aCe+C15j2ESdmyMaFLUaUIS47JS66UtaYxp5ia
+mJFO1hSNaoI0pGHyPFTTtfOza9z/01qkBbHB4htzauqs/fX5ZrnyCDSrfpVipXke
+zkPKg4MkkytEkjRKw6tSXLpWIgF3ee2N/jBdefqlw8YPW08K0wmwF5qGuX6PZ8vB
+sOZeWeCfVr136BopkbfP3TkGWw2BrD8xSzOUez9HVc0v4SZ/7pe5w3L4V/mzYQLt
+O+1AHevCjX8+M58HYGBaWCAjxYUPGcGKcj0LLtgZgL6wY88N7RtfeOY3AgMBAAGj
+gY0wgYowFAYDVR0RBA0wC4IJMTI3LjAuMC4xMAwGA1UdEwEB/wQCMAAwEwYDVR0l
+BAwwCgYIKwYBBQUHAwEwDwYDVR0PAQH/BAUDAwcoADAdBgNVHQ4EFgQUKKuyJSrT
+Y+dnm1do7l0sVMX96SYwHwYDVR0jBBgwFoAUafmyFDRJ5NxzfH9w27pOShXRs+Yw
+DQYJKoZIhvcNAQEFBQADggExAHELijlIFdcncP3B+vxEp0SGKl0arIaCXahivb2F
+VxeM3WajN6O+oDRLFltzMeDKA9RVkao7fgITzXQgCGzeNhKv0vc9iDyvR9/67vuS
+W8xEEJrYowtw3VK5H1y0ewqZaxJhvKUjm4TBRWe8FGKD3s64lEsfbjOaI5VPidVc
+DXmdAlXsj0Hk+v4Ej8mshPQAnVSyJ3D0ZMgTjk8Di28N0qROFIYJaTObK1rCb1nQ
+GaCcmbZU6JnkYvVZ+iUe5U0GXFbb+LRNTUT8/fw1zADeHnv/G+WWVrfND+sov5Oc
+33fkNE6z+n6ayABVnGLuCYhbzD38sv0dnxeh8vbykNBPzYdzPg6nw3Czv2vlhKpJ
+8Yj/maoXuAyTXVf30K1/fAWyU45noq57MjQpU6UxIX1D7qw=
+-----END CERTIFICATE-----
diff --git a/tests/auto/network/ssl/qsslsocket/certs/leaf.key b/tests/auto/network/ssl/qsslsocket/certs/leaf.key
new file mode 100644
index 0000000000..54327925d8
--- /dev/null
+++ b/tests/auto/network/ssl/qsslsocket/certs/leaf.key
@@ -0,0 +1,32 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIFfAIBAAKCATEAuxCFiM2+1wn5kENShXWeRPX+PXjSvyr7F2H6v4ldvStXM9oV
+Mr33SoMlORf/gTj0CkOc3Vp9Qq2maLBb/4m7jt5oUaTHwUnzZ9633axO1rQNMIE9
+mDSDdC+GgnvgteY9hEnZsjGhS1GlCEuOyUuulLWmMaeYmpiRTtYUjWqCNKRh8jxU
+07Xzs2vc/9NapAWxweIbc2rqrP31+Wa58gg0q36VYqV5Hs5DyoODJJMrRJI0SsOr
+Uly6ViIBd3ntjf4wXXn6pcPGD1tPCtMJsBeahrl+j2fLwbDmXlngn1a9d+gaKZG3
+z905BlsNgaw/MUszlHs/R1XNL+Emf+6XucNy+Ff5s2EC7TvtQB3rwo1/PjOfB2Bg
+WlggI8WFDxnBinI9Cy7YGYC+sGPPDe0bX3jmNwIDAQABAoIBMQCczBNyAStGqjjC
+oHuKHHWmTh9mPWFBFfDTv6/jXmvxRWPZtaHxH2Qp09Wejqv/D9MWy2ev7spx2oZS
+2Ai1ICjTbz83uAwryyW4Wen6aBTJSLCJiLstWk8ZU0DHHLjVH4FO4mwUPh95t5zC
+YDr2JXbXdY8xrc5vPxUFZNJjWvR61ZK37bQYpTn5mZ7r3KfsNk2yOylRTDwa9XFo
+ZZ+B82NKdrrz0UvGOnXZa5qd1ap7V+67FIAS2Mt8AMzSCG8TW0JXRUk89ISgAd8r
+NQTPtX9XCnMZSbBzDKdznXfHS9ZlJcSrpsbQCPcvMVNrdBfCF0eNnsRJffJGdaXI
+MsN6PvbcXWD08lXNGyeLjon03RdJnTAamNM3YQEIcjFmu5Y0o0CCJkZSCJPKJGMG
+0d/1tN/5AoGZANOcOgQZ9Wiu0ej3YoQ3aSHu3y8ZBJH4B3ViX8i+2x/6UnG7KNaa
+4Ygid1upnX6hk4CW5WZcoxGFacrFRpInKh5Ng8lEIHGp0VSzOBVDR0L5sAxutFuX
+6N9C0CuH80vD101mOloNnfT5KHZMI5RXqP6sDGUFlwak2XybDL1qOAza3gZAy25H
+vS/ll1BneBavikR5j+zxoTztAoGZAOJOJ5RyOrqpNuhiWZylah5LIFT9N1lCF4Hl
+ZbFIjUZ4jcApJ7JxkMXNQ4RU/3AiKCC1xr5ib7dd/qyjKXhdMo4SnLoKhapx5R9G
+3XOsQMahiCD/Zcymv9tmk8MxxzbLxhZYhEPzIP/NFkua3CHiX+d1e6fkzFLF/EiX
+ZGQOgRcFKrlzUeBputRQRXAkKJH+kMClgAWvy28zAoGYKyaMXhG9DV+4xjzMBhIW
+iijfsgbz+6AMRU+OIK1qmZa+ARsdNMXYf54noLVxvETOg0ZB+SGizwvZitO3lE4Q
+NKWx3fTaeNMcMJ1rLkrN2UZ5M8/PT24muoAxWu8aGbURzmKuO3bTYwT7z0OvbayC
+dYw36tG8/knXX6Vub6GdVGG9LKFB2nceiQnUVT0EK/wXwebYBoUvT/ECgZgF9qdG
+Wyg/CPyAbS8NWLKOL86fTrjpqjsyWhgu7smCROT/XlZEdoepHrqbvx2oF85U5lVh
+aPimrVxrsjUCjfoqEkV9BY/2KOAvzc9CIBTo5xLOQ8yr8uz1XCOiriogwIfsyNJb
+dAm3k/D1dxQ79FowoEDs8LONrtfyFcM4e8VdFO7GSkqrDj41IBRkWx+SkVHBMdtI
+yxQiTwKBmQCWym2iDCJg1ZZq4/lVwRudMhVmHoD0yoCAwADYHjjAi8QBplM0vfdd
+CESKsnBhlcrPGB279BKVJyZHehKZG+/dfnFs+to14l6A3IqU2d6+pu3EyFNX34HS
+xo+64QxMeF0akWnSaIPfUJfk36phjCvLBr4eLXN1i4jW3RdGFwF1THXt29VSSGmU
+q/hM51H0bsQ13AIVUSdNHA==
+-----END RSA PRIVATE KEY-----
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
index 1f9f1eb923..c94e5c7ffd 100644
--- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -142,6 +142,8 @@ private slots:
void protocolServerSide();
void setCaCertificates();
void setLocalCertificate();
+ void localCertificateChain();
+ void setLocalCertificateChain();
void setPrivateKey();
void setSocketDescriptor();
void setSslConfiguration_data();
@@ -927,15 +929,20 @@ class SslServer : public QTcpServer
{
Q_OBJECT
public:
- SslServer(const QString &keyFile = SRCDIR "certs/fluke.key", const QString &certFile = SRCDIR "certs/fluke.cert")
+ SslServer(const QString &keyFile = SRCDIR "certs/fluke.key",
+ const QString &certFile = SRCDIR "certs/fluke.cert",
+ const QString &interFile = QString())
: socket(0),
protocol(QSsl::TlsV1_0),
m_keyFile(keyFile),
- m_certFile(certFile) { }
+ m_certFile(certFile),
+ m_interFile(interFile)
+ { }
QSslSocket *socket;
QSsl::SslProtocol protocol;
QString m_keyFile;
QString m_certFile;
+ QString m_interFile;
protected:
void incomingConnection(qintptr socketDescriptor)
@@ -950,10 +957,24 @@ protected:
QVERIFY(!key.isNull());
socket->setPrivateKey(key);
- QList<QSslCertificate> localCert = QSslCertificate::fromPath(m_certFile);
- QVERIFY(!localCert.isEmpty());
- QVERIFY(localCert.first().handle());
- socket->setLocalCertificate(localCert.first());
+ // If we have a cert issued directly from the CA
+ if (m_interFile.isEmpty()) {
+ QList<QSslCertificate> localCert = QSslCertificate::fromPath(m_certFile);
+ QVERIFY(!localCert.isEmpty());
+ QVERIFY(localCert.first().handle());
+ socket->setLocalCertificate(localCert.first());
+ }
+ else {
+ QList<QSslCertificate> localCert = QSslCertificate::fromPath(m_certFile);
+ QVERIFY(!localCert.isEmpty());
+ QVERIFY(localCert.first().handle());
+
+ QList<QSslCertificate> interCert = QSslCertificate::fromPath(m_interFile);
+ QVERIFY(!interCert.isEmpty());
+ QVERIFY(interCert.first().handle());
+
+ socket->setLocalCertificateChain(localCert + interCert);
+ }
QVERIFY(socket->setSocketDescriptor(socketDescriptor, QAbstractSocket::ConnectedState));
QVERIFY(!socket->peerAddress().isNull());
@@ -1100,6 +1121,55 @@ void tst_QSslSocket::setLocalCertificate()
{
}
+void tst_QSslSocket::localCertificateChain()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslSocket socket;
+ socket.setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert"));
+
+ QSslConfiguration conf = socket.sslConfiguration();
+ QList<QSslCertificate> chain = conf.localCertificateChain();
+ QCOMPARE(chain.size(), 1);
+ QCOMPARE(chain[0], conf.localCertificate());
+ QCOMPARE(chain[0], socket.localCertificate());
+}
+
+void tst_QSslSocket::setLocalCertificateChain()
+{
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QFETCH_GLOBAL(bool, setProxy);
+ if (setProxy)
+ return;
+
+ SslServer server(QLatin1String(SRCDIR "certs/leaf.key"),
+ QLatin1String(SRCDIR "certs/leaf.crt"),
+ QLatin1String(SRCDIR "certs/inter.crt"));
+
+ QVERIFY(server.listen());
+
+ QEventLoop loop;
+ QTimer::singleShot(5000, &loop, SLOT(quit()));
+
+ socket = new QSslSocket();
+ connect(socket, SIGNAL(encrypted()), &loop, SLOT(quit()));
+ connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), &loop, SLOT(quit()));
+ connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
+
+ socket->connectToHostEncrypted(QHostAddress(QHostAddress::LocalHost).toString(), server.serverPort());
+ loop.exec();
+
+ QList<QSslCertificate> chain = socket->peerCertificateChain();
+ QCOMPARE(chain.size(), 2);
+ QCOMPARE(chain[0].serialNumber(), QByteArray("10:a0:ad:77:58:f6:6e:ae:46:93:a3:43:f9:59:8a:9e"));
+ QCOMPARE(chain[1].serialNumber(), QByteArray("3b:eb:99:c5:ea:d8:0b:5d:0b:97:5d:4f:06:75:4b:e1"));
+
+ socket->deleteLater();
+}
+
void tst_QSslSocket::setPrivateKey()
{
}
@@ -1533,6 +1603,8 @@ public slots:
void tst_QSslSocket::setReadBufferSize_task_250027()
{
+ QSKIP("QTBUG-29730 - flakey test blocking integration");
+
// do not execute this when a proxy is set.
QFETCH_GLOBAL(bool, setProxy);
if (setProxy)
diff --git a/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp b/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp
index 475054940b..915f503b3f 100644
--- a/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp
+++ b/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp
@@ -202,6 +202,11 @@ void tst_QGLBuffer::testBuffer(QGLBuffer::Type type)
void tst_QGLBuffer::bufferSharing()
{
+#if defined(Q_OS_WIN)
+ // Needs investigation on Windows: https://bugreports.qt-project.org/browse/QTBUG-29692
+ QSKIP("Unreproducible timeout on Windows (MSVC/MinGW) CI bots");
+#endif
+
QGLWidget *w1 = new QGLWidget();
w1->makeCurrent();
diff --git a/tests/auto/other/collections/tst_collections.cpp b/tests/auto/other/collections/tst_collections.cpp
index e145cc17df..df622602c3 100644
--- a/tests/auto/other/collections/tst_collections.cpp
+++ b/tests/auto/other/collections/tst_collections.cpp
@@ -3359,7 +3359,7 @@ void testVectorAlignment()
for (int i = 0; i < 200; ++i)
container.append(Aligned());
-
+
for (int i = 0; i < container.size(); ++i)
QCOMPARE(quintptr(&container.at(i)) % Aligned::PreferredAlignment, quintptr(0));
}
diff --git a/tests/auto/other/lancelot/lancelot.pro b/tests/auto/other/lancelot/lancelot.pro
index b577e0dbc9..ef557691e3 100644
--- a/tests/auto/other/lancelot/lancelot.pro
+++ b/tests/auto/other/lancelot/lancelot.pro
@@ -1,5 +1,6 @@
CONFIG += testcase
CONFIG += parallel_test
+CONFIG -= app_bundle
TARGET = tst_lancelot
QT += xml widgets testlib
diff --git a/tests/auto/other/lancelot/scripts/background.qps b/tests/auto/other/lancelot/scripts/background.qps
index 000cfcdd91..d1efe5c178 100644
--- a/tests/auto/other/lancelot/scripts/background.qps
+++ b/tests/auto/other/lancelot/scripts/background.qps
@@ -14,12 +14,12 @@ path_lineTo path 0 50
bitmap_load bitmap.png bitmap
begin_block drawing
- save
+ save
drawRect 0 0 50 50
translate 60 0
drawEllipse 0 0 50 50
-
+
translate 60 0
drawPolygon [0 0 50 0 25 50 25 25]
@@ -28,9 +28,9 @@ begin_block drawing
translate 60 0
drawPie 0 0 50 50 1440 2000
-
+
translate 60 0
- drawChord 0 0 50 50 1440 2000
+ drawChord 0 0 50 50 1440 2000
translate 60 0
drawLine 0 0 50 0
@@ -44,10 +44,10 @@ begin_block drawing
drawArc 0 0 50 50 1440 2000
translate 60 0
- drawText 0 10 "Jambi-Bambi"
+ drawText 0 10 "Jambi-Bambi"
translate 80 0
- drawPixmap bitmap 0 0
+ drawPixmap bitmap 0 0
restore
save
@@ -57,7 +57,7 @@ begin_block drawing
translate 60 0
drawEllipse 0 0 50 50
-
+
translate 60 0
drawPolygon [0 0 50 0 25 50 25 25]
@@ -66,9 +66,9 @@ begin_block drawing
translate 60 0
drawPie 0 0 50 50 1440 2000
-
+
translate 60 0
- drawChord 0 0 50 50 1440 2000
+ drawChord 0 0 50 50 1440 2000
translate 60 0
drawLine 0 0 50 0
@@ -82,10 +82,10 @@ begin_block drawing
drawArc 0 0 50 50 1440 2000
translate 60 0
- drawText 0 10 "Jambi-Bambi"
+ drawText 0 10 "Jambi-Bambi"
translate 80 0
- drawPixmap bitmap 0 0
+ drawPixmap bitmap 0 0
restore
end_block
@@ -102,12 +102,12 @@ repeat_block drawing
translate 0 160
setBackgroundMode Transparent
setPen ff7f7f 4 dashline flatcap beveljoin
-repeat_block drawing
+repeat_block drawing
translate 0 160
setBackgroundMode OpaqueMode
setPen ff7f7f 4 dashline flatcap beveljoin
-repeat_block drawing
+repeat_block drawing
resetMatrix
diff --git a/tests/auto/other/lancelot/scripts/bitmaps.qps b/tests/auto/other/lancelot/scripts/bitmaps.qps
index a816b9d497..4966490337 100644
--- a/tests/auto/other/lancelot/scripts/bitmaps.qps
+++ b/tests/auto/other/lancelot/scripts/bitmaps.qps
@@ -122,12 +122,12 @@ translate 110 0
save
translate 20 -10
rotate 10
- setBackgroundMode Transparent
+ setBackgroundMode Transparent
repeat_block draw_subrected
restore
translate 110 0
-save
+save
translate 20 -10
rotate 10
setBackgroundMode Opaque
diff --git a/tests/auto/other/lancelot/scripts/clippaths.qps b/tests/auto/other/lancelot/scripts/clippaths.qps
index fba89784df..fe8e198a17 100644
--- a/tests/auto/other/lancelot/scripts/clippaths.qps
+++ b/tests/auto/other/lancelot/scripts/clippaths.qps
@@ -4,7 +4,7 @@
path_addRect hor 0 0 50 10
path_addRect ver 0 0 10 50
-translate 10 10
+translate 10 10
setPen NoPen
begin_block clipping
@@ -13,7 +13,7 @@ save
setBrush 0x7f7fff
save
setClipPath hor
- drawRect 0 0 100 100
+ drawRect 0 0 100 100
setClipPath ver IntersectClip
setBrush black CrossPattern
@@ -21,18 +21,18 @@ save
restore
translate 100 0
- save
+ save
setClipPath hor
drawRect 0 0 100 100
setClipPath ver ReplaceClip
setBrush black CrossPattern
- drawRect 0 0 100 100
+ drawRect 0 0 100 100
restore
translate 100 0
- save
- setClipPath hor
+ save
+ setClipPath hor
drawRect 0 0 100 100
setClipPath ver UniteClip
diff --git a/tests/auto/other/lancelot/scripts/cliprects.qps b/tests/auto/other/lancelot/scripts/cliprects.qps
index 0d28b035b4..aa0367eccf 100644
--- a/tests/auto/other/lancelot/scripts/cliprects.qps
+++ b/tests/auto/other/lancelot/scripts/cliprects.qps
@@ -3,7 +3,7 @@
-translate 10 10
+translate 10 10
setPen NoPen
begin_block clipping
@@ -11,8 +11,8 @@ save
setBrush 0x7f7fff
save
- setClipRect 0 0 50 10
- drawRect 0 0 100 100
+ setClipRect 0 0 50 10
+ drawRect 0 0 100 100
setClipRect 0 0 10 50 IntersectClip
setBrush black CrossPattern
@@ -20,17 +20,17 @@ save
restore
translate 100 0
- save
+ save
setClipRect 0 0 50 10
drawRect 0 0 100 100
setClipRect 0 0 10 50 ReplaceClip
setBrush black CrossPattern
- drawRect 0 0 100 100
+ drawRect 0 0 100 100
restore
translate 100 0
- save
+ save
setClipRect 0 0 50 10
drawRect 0 0 100 100
diff --git a/tests/auto/other/lancelot/scripts/conical_gradients.qps b/tests/auto/other/lancelot/scripts/conical_gradients.qps
index 2e897b1813..d6eb860f3f 100644
--- a/tests/auto/other/lancelot/scripts/conical_gradients.qps
+++ b/tests/auto/other/lancelot/scripts/conical_gradients.qps
@@ -64,7 +64,7 @@ setBrush nobrush
begin_block ellipse_draw
setClipRect 0 0 100 100
drawEllipse 35 35 11 11
- save
+ save
translate 40 40
rotate -50
drawLine -100 0 100 0
diff --git a/tests/auto/other/lancelot/scripts/dashes.qps b/tests/auto/other/lancelot/scripts/dashes.qps
index 649f56cf66..185443a292 100644
--- a/tests/auto/other/lancelot/scripts/dashes.qps
+++ b/tests/auto/other/lancelot/scripts/dashes.qps
@@ -15,7 +15,7 @@ save
setPen black 1 SolidLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 2 SolidLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -25,7 +25,7 @@ save
setPen black 2 SolidLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 6 SolidLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -36,8 +36,8 @@ save
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
restore
-
-
+
+
translate 100 0
save
setPen black 1 DotLine FlatCap BevelJoin
@@ -49,7 +49,7 @@ save
setPen black 1 DotLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 2 DotLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -59,7 +59,7 @@ save
setPen black 2 DotLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 6 DotLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -70,7 +70,7 @@ save
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
restore
-
+
translate 100 0
save
setPen black 1 DashLine FlatCap BevelJoin
@@ -82,7 +82,7 @@ save
setPen black 1 DashLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 2 DashLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -92,7 +92,7 @@ save
setPen black 2 DashLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 6 DashLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -103,9 +103,9 @@ save
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
restore
-
+
translate 100 0
-
+
save
setPen black 1 DashDotLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
@@ -116,7 +116,7 @@ save
setPen black 1 DashDotLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 2 DashDotLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -126,7 +126,7 @@ save
setPen black 2 DashDotLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 6 DashDotLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -137,7 +137,7 @@ save
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
restore
-
+
translate 100 0
save
@@ -150,7 +150,7 @@ save
setPen black 1 DashDotDotLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 2 DashDotDotLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -160,7 +160,7 @@ save
setPen black 2 DashDotDotLine RoundCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 4 DashDotDotLine FlatCap BevelJoin
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
@@ -187,7 +187,7 @@ save
pen_setDashPattern [1 4 9 4 27 4]
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 2 SolidLine FlatCap BevelJoin
pen_setDashPattern [1 4 9 4 27 4]
drawPolyline [0 0 80 0 80 30 40 20 0 30]
@@ -200,7 +200,7 @@ save
pen_setDashPattern [1 4 9 4 27 4]
drawPolyline [0 0 80 0 80 30 40 20 0 30]
translate 0 40
-
+
setPen black 4 SolidLine FlatCap BevelJoin
pen_setDashPattern [1 4 9 4 27 4]
drawPolyline [0 0 80 0 80 30 40 20 0 30]
@@ -217,7 +217,7 @@ save
restore
end_block
-
+
translate 0 400
setRenderHint Antialiasing
repeat_block draw
diff --git a/tests/auto/other/lancelot/scripts/deviceclipping.qps b/tests/auto/other/lancelot/scripts/deviceclipping.qps
index cedfc1e363..8608a50994 100644
--- a/tests/auto/other/lancelot/scripts/deviceclipping.qps
+++ b/tests/auto/other/lancelot/scripts/deviceclipping.qps
@@ -22,7 +22,7 @@ begin_block drawing
drawRect 300 -500000 1000000 1000000
drawPath path
-
+
end_block
save
diff --git a/tests/auto/other/lancelot/scripts/pixmap_scaling.qps b/tests/auto/other/lancelot/scripts/pixmap_scaling.qps
index 651896f4a3..8a5ab2c60e 100644
--- a/tests/auto/other/lancelot/scripts/pixmap_scaling.qps
+++ b/tests/auto/other/lancelot/scripts/pixmap_scaling.qps
@@ -8,8 +8,8 @@
translate 5 25
setFont "arial" 8
-save
- drawText 15 0 "opaque image"
+save
+ drawText 15 0 "opaque image"
translate 50 50
save
translate 1 1
@@ -21,23 +21,23 @@ save
scale -20 20
drawImage solid2x2.png 0 0
restore
- save
+ save
translate 1 -1
scale 20 -20
drawImage solid2x2.png 0 0
restore
- save
+ save
translate -1 -1
scale -20 -20
drawImage solid2x2.png 0 0
restore
-
-restore
+
+restore
save
translate 150 0
- drawText 15 0 "alpha image"
+ drawText 15 0 "alpha image"
translate 50 50
save
translate 1 1
@@ -49,12 +49,12 @@ save
scale -20 20
drawImage alpha2x2.png 0 0
restore
- save
+ save
translate 1 -1
scale 20 -20
drawImage alpha2x2.png 0 0
restore
- save
+ save
translate -1 -1
scale -20 -20
drawImage alpha2x2.png 0 0
@@ -64,7 +64,7 @@ restore
save
translate 0 150
- drawText 15 0 "solid pixmap"
+ drawText 15 0 "solid pixmap"
translate 50 50
save
translate 1 1
@@ -76,12 +76,12 @@ save
scale -20 20
drawPixmap solid2x2.png 0 0
restore
- save
+ save
translate 1 -1
scale 20 -20
drawPixmap solid2x2.png 0 0
restore
- save
+ save
translate -1 -1
scale -20 -20
drawPixmap solid2x2.png 0 0
@@ -90,9 +90,9 @@ restore
save
- translate 150 150
+ translate 150 150
drawText 15 0 "alpha pixmap"
- translate 50 50
+ translate 50 50
save
translate 1 1
scale 20 20
@@ -103,12 +103,12 @@ save
scale -20 20
drawPixmap alpha2x2.png 0 0
restore
- save
+ save
translate 1 -1
scale 20 -20
drawPixmap alpha2x2.png 0 0
restore
- save
+ save
translate -1 -1
scale -20 -20
drawPixmap alpha2x2.png 0 0
@@ -116,7 +116,7 @@ save
restore
-save
+save
translate 300 10
save
drawText 0 -10 "subrect solid image"
@@ -143,7 +143,7 @@ save
drawImage solid2x2.png 45 0 5 50 1.8 0 0.2 2
restore
- save
+ save
translate 150 0
drawText 0 -10 "subrect solid image"
drawImage alpha2x2.png 0 0 50 5 0 0.0 2 0.2
@@ -156,7 +156,7 @@ save
drawImage alpha2x2.png 0 35 50 5 0 1.4 2 0.2
drawImage alpha2x2.png 0 40 50 5 0 1.6 2 0.2
drawImage alpha2x2.png 0 45 50 5 0 1.8 2 0.2
- translate 60 0
+ translate 60 0
drawImage alpha2x2.png 0 0 5 50 0.0 0 0.2 2
drawImage alpha2x2.png 5 0 5 50 0.2 0 0.2 2
drawImage alpha2x2.png 10 0 5 50 0.4 0 0.2 2
diff --git a/tests/auto/other/lancelot/scripts/pixmap_subpixel.qps b/tests/auto/other/lancelot/scripts/pixmap_subpixel.qps
index 908f7c3465..d5b7b92fc9 100644
--- a/tests/auto/other/lancelot/scripts/pixmap_subpixel.qps
+++ b/tests/auto/other/lancelot/scripts/pixmap_subpixel.qps
@@ -6,7 +6,7 @@ translate 50 50
# Pixmaps at 0.1 offset, unclipped
begin_block draw_pixmaps
-save
+save
drawPixmap border.png 0 0
translate 20.1 0.1
drawPixmap border.png 0 0
@@ -27,7 +27,7 @@ save
translate 20.1 0.1
drawPixmap border.png 0 0
translate 20.1 0.1
-
+
drawPixmap border.png 0 0
translate 20.1 0.1
drawPixmap border.png 0 0
@@ -49,12 +49,12 @@ save
drawPixmap border.png 0 0
translate 20.1 0.1
restore
-end_block
+end_block
# Tiled pixmaps at 0.1 offsets, unclipped
translate 0 50
begin_block draw_tiled
-save
+save
drawTiledPixmap border.png 0 0 16 16 0 0
translate 20.1 0.1
drawTiledPixmap border.png 0 0 16 16 0 0
@@ -75,7 +75,7 @@ save
translate 20.1 0.1
drawTiledPixmap border.png 0 0 16 16 0 0
translate 20.1 0.1
-
+
drawTiledPixmap border.png 0 0 16 16 0 0
translate 20.1 0.1
drawTiledPixmap border.png 0 0 16 16 0 0
@@ -97,7 +97,7 @@ save
drawTiledPixmap border.png 0 0 16 16 0 0
translate 20.1 0.1
restore
-end_block
+end_block
path_moveTo clip 0 0
diff --git a/tests/auto/other/lancelot/scripts/pixmaps.qps b/tests/auto/other/lancelot/scripts/pixmaps.qps
index 8e60997acc..0b4ba2c4fb 100644
--- a/tests/auto/other/lancelot/scripts/pixmaps.qps
+++ b/tests/auto/other/lancelot/scripts/pixmaps.qps
@@ -15,13 +15,13 @@ save
drawPixmap the_pixmap 0 0
# sub recting
- translate 120 0
+ translate 120 0
drawPixmap the_pixmap 0 0 40 40 0 0 40 40
drawPixmap the_pixmap 60 0 40 40 60 0 40 40
drawPixmap the_pixmap 0 60 40 40 0 60 40 40
drawPixmap the_pixmap 60 60 40 40 60 60 40 40
drawPixmap the_pixmap 0 40 40 20 0 40 40 20
- drawPixmap the_pixmap 60 40 40 20 60 40 40 20
+ drawPixmap the_pixmap 60 40 40 20 60 40 40 20
drawPixmap the_pixmap 40 0 20 100 40 0 20 100
# subrecting w/scale
@@ -30,15 +30,15 @@ save
drawPixmap the_pixmap 50 0 50 50 25 0 25 25
drawPixmap the_pixmap 0 50 50 50 0 25 25 25
drawPixmap the_pixmap 50 50 50 50 25 25 25 25
-
+
# subrecting w/scale & smooth xform
translate 120 0
- setRenderHint SmoothPixmapTransformation
+ setRenderHint SmoothPixmapTransformation
drawPixmap the_pixmap 0 0 50 50 0 0 25 25
drawPixmap the_pixmap 50 0 50 50 25 0 25 25
drawPixmap the_pixmap 0 50 50 50 0 25 25 25
drawPixmap the_pixmap 50 50 50 50 25 25 25 25
-
+
# Rotation w/o smooth xform
translate 120 0
diff --git a/tests/auto/other/lancelot/scripts/rasterops.qps b/tests/auto/other/lancelot/scripts/rasterops.qps
index 21f943b543..d0f2da42df 100644
--- a/tests/auto/other/lancelot/scripts/rasterops.qps
+++ b/tests/auto/other/lancelot/scripts/rasterops.qps
@@ -13,9 +13,9 @@ begin_block drawShape
setBrush 0xffff0000
drawEllipse 5 5 30 30
setBrush 0xff00ff00
- drawRect 0 0 20 20
+ drawRect 0 0 20 20
setBrush 0xff0000ff
- drawRect 20 20 20 20
+ drawRect 20 20 20 20
end_block
begin_block loop
diff --git a/tests/auto/other/lancelot/scripts/sizes.qps b/tests/auto/other/lancelot/scripts/sizes.qps
index 68e01c3262..12b0f4af1e 100644
--- a/tests/auto/other/lancelot/scripts/sizes.qps
+++ b/tests/auto/other/lancelot/scripts/sizes.qps
@@ -4,7 +4,7 @@
setPen NoPen
setBrush black
-translate 10 10
+translate 10 10
begin_block testblock
drawRect 0 0 10 10
@@ -75,9 +75,9 @@ drawChord 180 100 19 19 0 4320
end_block
-setPen red
+setPen red
translate 0 150
-repeat_block testblock
+repeat_block testblock
setRenderHint LineAntialiasing
diff --git a/tests/auto/other/lancelot/scripts/statictext.qps b/tests/auto/other/lancelot/scripts/statictext.qps
index b62b623462..c5ddda197f 100644
--- a/tests/auto/other/lancelot/scripts/statictext.qps
+++ b/tests/auto/other/lancelot/scripts/statictext.qps
@@ -50,7 +50,25 @@ save
drawStaticText 0 80 "scaled sansserif 10pt, bold italic"
restore
- translate 0 100
+ translate 200 200
+ setPen black
+ save
+ scale -1 -1
+
+ setFont "sansserif" 10 normal
+ drawStaticText 0 20 "flipped sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 40 "flipped sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawStaticText 0 60 "flipped sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 80 "flipped sansserif 10pt, bold italic"
+ restore
+
+ translate -200 20
setPen black
save
translate 200 90
@@ -91,26 +109,26 @@ restore
end_block
translate 250 0
-drawStaticText 25 520 "clipped to rectangle"
+drawStaticText 25 640 "clipped to rectangle"
save
setPen #3f000000
setBrush nobrush
- drawRect 20 0 100 500
- setClipRect 20 0 100 500
+ drawRect 20 0 100 620
+ setClipRect 20 0 100 620
setPen black
repeat_block text_drawing
restore
translate 150 0
-drawStaticText 25 520 "clipped to path"
+drawStaticText 25 640 "clipped to path"
save
path_moveTo clip 20 0
path_cubicTo clip 0 200 40 400 20 400
- path_lineTo clip 30 500
+ path_lineTo clip 30 620
path_lineTo clip 30 0
path_lineTo clip 40 0
- path_lineTo clip 40 500
- path_lineTo clip 120 500
+ path_lineTo clip 40 620
+ path_lineTo clip 120 620
path_lineTo clip 120 0
path_lineTo clip 20 0
setPen #3f000000
diff --git a/tests/auto/other/lancelot/scripts/text.qps b/tests/auto/other/lancelot/scripts/text.qps
index d7ee83290b..e7d47448ea 100644
--- a/tests/auto/other/lancelot/scripts/text.qps
+++ b/tests/auto/other/lancelot/scripts/text.qps
@@ -7,112 +7,130 @@ begin_block text_drawing
save
setFont "sansserif" 10 normal
drawText 0 20 "sansserif 10pt, normal"
-
+
setFont "sansserif" 12 normal
drawText 0 40 "sansserif 12pt, normal"
-
+
setFont "sansserif" 10 bold
drawText 0 60 "sansserif 12pt, bold"
-
+
setFont "sansserif" 10 bold italic
drawText 0 80 "sansserif 10pt, bold italic"
-
-
+
+
translate 0 100
setPen #7fff0000
-
+
setFont "sansserif" 10 normal
drawText 0 20 "alpha sansserif 10pt, normal"
-
+
setFont "sansserif" 12 normal
drawText 0 40 "alpha sansserif 12pt, normal"
-
+
setFont "sansserif" 10 bold
drawText 0 60 "alpha sansserif 12pt, bold"
-
+
setFont "sansserif" 10 bold italic
drawText 0 80 "alpha sansserif 10pt, bold italic"
-
-
+
+
translate 0 100
setPen black
save
scale 0.9 0.9
-
+
setFont "sansserif" 10 normal
drawText 0 20 "scaled sansserif 10pt, normal"
-
+
setFont "sansserif" 12 normal
drawText 0 40 "scaled sansserif 12pt, normal"
-
+
setFont "sansserif" 10 bold
drawText 0 60 "scaled sansserif 12pt, bold"
-
+
setFont "sansserif" 10 bold italic
drawText 0 80 "scaled sansserif 10pt, bold italic"
restore
- translate 0 100
+ translate 200 200
+ setPen black
+ save
+ scale -1 -1
+
+ setFont "sansserif" 10 normal
+ drawStaticText 0 20 "flipped sansserif 10pt, normal"
+
+ setFont "sansserif" 12 normal
+ drawStaticText 0 40 "flipped sansserif 12pt, normal"
+
+ setFont "sansserif" 10 bold
+ drawStaticText 0 60 "flipped sansserif 12pt, bold"
+
+ setFont "sansserif" 10 bold italic
+ drawStaticText 0 80 "flipped sansserif 10pt, bold italic"
+ restore
+
+ translate -200 20
setPen black
save
translate 200 90
rotate 185
-
+
setFont "sansserif" 10 normal
drawText 0 20 "scaled sansserif 10pt, normal"
-
+
setFont "sansserif" 12 normal
drawText 0 40 "scaled sansserif 12pt, normal"
-
+
setFont "sansserif" 10 bold
drawText 0 60 "scaled sansserif 12pt, bold"
-
+
setFont "sansserif" 10 bold italic
drawText 0 80 "scaled sansserif 10pt, bold italic"
restore
-
+
translate 0 100
gradient_appendStop 0 red
gradient_appendStop 0.5 #00ff00
gradient_appendStop 1 blue
gradient_setLinear 0 0 200 0
setPen brush
-
+
setFont "sansserif" 10 normal
drawText 0 0 "gradient sansserif 10pt, normal"
-
+
setFont "sansserif" 12 normal
drawText 0 20 "gradient sansserif 12pt, normal"
-
+
setFont "sansserif" 10 bold
drawText 0 40 "gradient sansserif 12pt, bold"
-
+
setFont "sansserif" 10 bold italic
drawText 0 60 "gradient sansserif 10pt, bold italic"
restore
end_block
translate 250 0
-drawText 25 520 "clipped to rectangle"
+drawText 25 640 "clipped to rectangle"
save
setPen #3f000000
setBrush nobrush
- drawRect 20 0 100 500
- setClipRect 20 0 100 500
+ drawRect 20 0 100 620
+ setClipRect 20 0 100 620
setPen black
repeat_block text_drawing
restore
translate 150 0
-drawText 25 520 "clipped to path"
-save
+drawText 25 640 "clipped to path"
+save
path_moveTo clip 20 0
path_cubicTo clip 0 200 40 400 20 400
- path_lineTo clip 30 500
+ path_lineTo clip 30 620
path_lineTo clip 30 0
path_lineTo clip 40 0
- path_lineTo clip 40 500
- path_lineTo clip 120 500
+ path_lineTo clip 40 620
+ path_lineTo clip 120 620
path_lineTo clip 120 0
path_lineTo clip 20 0
setPen #3f000000
diff --git a/tests/auto/other/lancelot/scripts/tiled_pixmap.qps b/tests/auto/other/lancelot/scripts/tiled_pixmap.qps
index 9cb5e0dd1f..0ce3a7834c 100644
--- a/tests/auto/other/lancelot/scripts/tiled_pixmap.qps
+++ b/tests/auto/other/lancelot/scripts/tiled_pixmap.qps
@@ -5,7 +5,7 @@
translate 0 10
setRenderHint Antialiasing
-pixmap_load dome_argb32 the_pixmap
+pixmap_load dome_argb32 the_pixmap
begin_block draw_stuff
save
@@ -25,7 +25,7 @@ save
setRenderHint SmoothPixmapTransform false
drawTiledPixmap the_pixmap 0 0 150 100 25 25
restore
-
+
# xformed with smooth xform
translate 160 0
save
@@ -38,17 +38,17 @@ restore
end_block
translate 0 120
-pixmap_load dome_rgb32 the_pixmap
+pixmap_load dome_rgb32 the_pixmap
repeat_block draw_stuff
translate 0 120
-pixmap_load dome_indexed the_pixmap
+pixmap_load dome_indexed the_pixmap
repeat_block draw_stuff
translate 0 120
-pixmap_load dome_indexed_mask the_pixmap
+pixmap_load dome_indexed_mask the_pixmap
repeat_block draw_stuff
diff --git a/tests/auto/other/macgui/guitest.cpp b/tests/auto/other/macgui/guitest.cpp
index d4af5c1386..93e9db9a61 100644
--- a/tests/auto/other/macgui/guitest.cpp
+++ b/tests/auto/other/macgui/guitest.cpp
@@ -118,10 +118,10 @@ QAccessibleInterface *WidgetNavigator::recursiveSearch(TestBase *test, QAccessib
while (todoInterfaces.isEmpty() == false) {
QAccessibleInterface *testInterface = todoInterfaces.pop();
-
+
if ((*test)(testInterface))
return testInterface;
-
+
const int numChildren = testInterface->childCount();
for (int i = 0; i < numChildren; ++i) {
QAccessibleInterface *childInterface = testInterface->child(i);
@@ -160,17 +160,17 @@ namespace NativeEvents {
CGPoint position;
position.x = globalPos.x();
position.y = globalPos.y();
-
+
const bool updateMousePosition = (updateMouse == UpdatePosition);
-
+
// Mouse down.
- CGPostMouseEvent(position, updateMousePosition, 3,
- (buttons & Qt::LeftButton) ? true : false,
- (buttons & Qt::MidButton/* Middlebutton! */) ? true : false,
+ CGPostMouseEvent(position, updateMousePosition, 3,
+ (buttons & Qt::LeftButton) ? true : false,
+ (buttons & Qt::MidButton/* Middlebutton! */) ? true : false,
(buttons & Qt::RightButton) ? true : false);
// Mouse up.
- CGPostMouseEvent(position, updateMousePosition, 3, false, false, false);
+ CGPostMouseEvent(position, updateMousePosition, 3, false, false, false);
}
#else
# error Oops, NativeEvents::mouseClick() is not implemented on this platform.
@@ -200,7 +200,7 @@ bool checkPixel(QColor pixel, QColor expected)
}
/*
- Tests that the pixels inside rect in image all have the given color.
+ Tests that the pixels inside rect in image all have the given color.
*/
bool GuiTester::isFilled(const QImage image, const QRect &rect, const QColor &color)
{
@@ -218,7 +218,7 @@ bool GuiTester::isFilled(const QImage image, const QRect &rect, const QColor &co
/*
Tests that stuff is painted to the pixels inside rect.
- This test fails if any lines in the given direction have pixels
+ This test fails if any lines in the given direction have pixels
of only one color.
*/
bool GuiTester::isContent(const QImage image, const QRect &rect, Directions directions)
@@ -239,7 +239,7 @@ bool GuiTester::isContent(const QImage image, const QRect &rect, Directions dire
}
}
return true;
- }
+ }
if (directions & Vertical) {
for (int x = rect.left(); x <= rect.right(); ++x) {
diff --git a/tests/auto/other/macgui/guitest.h b/tests/auto/other/macgui/guitest.h
index 1b5f933769..2d02cce720 100644
--- a/tests/auto/other/macgui/guitest.h
+++ b/tests/auto/other/macgui/guitest.h
@@ -70,12 +70,12 @@ public:
void printAll(QWidget *widget);
void printAll(QAccessibleInterface *interface);
-
+
QAccessibleInterface *find(QAccessible::Text textType, const QString &text, QWidget *start);
QAccessibleInterface *find(QAccessible::Text textType, const QString &text, QAccessibleInterface *start);
QAccessibleInterface *recursiveSearch(TestBase *test, QAccessibleInterface *iface);
-
+
void deleteInDestructor(QAccessibleInterface * interface);
static QWidget *getWidget(QAccessibleInterface *interface);
private:
@@ -99,7 +99,7 @@ class ColorWidget : public QWidget
public:
ColorWidget(QWidget *parent = 0, QColor color = QColor(Qt::red))
: QWidget(parent), color(color) {}
-
+
QColor color;
protected:
@@ -139,7 +139,7 @@ private:
};
/*
-
+
*/
class GuiTester : public QObject
{
diff --git a/tests/auto/other/macgui/tst_macgui.cpp b/tests/auto/other/macgui/tst_macgui.cpp
index cfe27095a8..e796b44843 100644
--- a/tests/auto/other/macgui/tst_macgui.cpp
+++ b/tests/auto/other/macgui/tst_macgui.cpp
@@ -41,7 +41,7 @@
#include <QApplication>
-#include <QMessageBox>
+#include <QMessageBox>
#include <QtTest/QtTest>
#include <QSplashScreen>
#include <QScrollBar>
@@ -55,7 +55,7 @@ class tst_MacGui : public GuiTester
Q_OBJECT
private slots:
void scrollbarPainting();
-
+
void dummy();
void splashScreenModality();
void nonModalOrder();
@@ -216,7 +216,7 @@ void tst_MacGui::spinBoxArrowButtons()
spinBox2.move(0, 100);
colorWidget.show();
QTest::qWait(100);
-
+
// Grab an unfocused spin box.
const QImage noFocus = grabWindowContents(&colorWidget).toImage();
diff --git a/tests/auto/other/macnativeevents/tst_macnativeevents.cpp b/tests/auto/other/macnativeevents/tst_macnativeevents.cpp
index 3072d163c3..ae59672c72 100644
--- a/tests/auto/other/macnativeevents/tst_macnativeevents.cpp
+++ b/tests/auto/other/macnativeevents/tst_macnativeevents.cpp
@@ -293,7 +293,7 @@ void tst_MacNativeEvents::testMouseEnter()
void tst_MacNativeEvents::testChildDialogInFrontOfModalParent()
{
- // Test that a child dialog of a modal parent dialog is
+ // Test that a child dialog of a modal parent dialog is
// in front of the parent, and active:
QDialog parent;
parent.setWindowModality(Qt::ApplicationModal);
diff --git a/tests/auto/other/other.pro b/tests/auto/other/other.pro
index 35aaf4d48f..1f7582243e 100644
--- a/tests/auto/other/other.pro
+++ b/tests/auto/other/other.pro
@@ -42,6 +42,14 @@ SUBDIRS=\
qaccessibility \
qaccessibilitylinux \
+!qtHaveModule(network): SUBDIRS -= \
+ baselineexample \
+ headersclean \
+ lancelot \
+ networkselftest \
+ qnetworkaccessmanager_and_qprogressdialog \
+ qobjectperformance
+
testcocoon: SUBDIRS -= headersclean
cross_compile: SUBDIRS -= \
diff --git a/tests/auto/other/qaccessibility/qaccessibility.pro b/tests/auto/other/qaccessibility/qaccessibility.pro
index 54a076b8fa..071b0bb66c 100644
--- a/tests/auto/other/qaccessibility/qaccessibility.pro
+++ b/tests/auto/other/qaccessibility/qaccessibility.pro
@@ -1,7 +1,7 @@
CONFIG += testcase
TARGET = tst_qaccessibility
requires(contains(QT_CONFIG,accessibility))
-QT += widgets testlib gui-private
+QT += testlib gui-private widgets-private
SOURCES += tst_qaccessibility.cpp
unix:!mac:LIBS+=-lm
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
index b0d0459326..ab5b36cf69 100644
--- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
@@ -58,7 +58,9 @@
#endif
#include <QtTest/QtTest>
#include <QtGui>
+#include <QtGui/private/qaccessible2_p.h>
#include <QtWidgets>
+#include <QtWidgets/private/qaccessiblewidget_p.h>
#include <math.h>
#include <qpa/qplatformnativeinterface.h>
@@ -768,12 +770,40 @@ void tst_QAccessibility::actionTest()
void tst_QAccessibility::applicationTest()
{
+ {
QLatin1String name = QLatin1String("My Name");
qApp->setApplicationName(name);
- QAccessibleInterface *interface = QAccessible::queryAccessibleInterface(qApp);
+ QAIPtr interface(QAccessible::queryAccessibleInterface(qApp));
QCOMPARE(interface->text(QAccessible::Name), name);
+ QCOMPARE(interface->text(QAccessible::Description), qApp->applicationFilePath());
+ QCOMPARE(interface->text(QAccessible::Value), QString());
QCOMPARE(interface->role(), QAccessible::Application);
- delete interface;
+ QCOMPARE(interface->window(), static_cast<QWindow*>(0));
+ QCOMPARE(interface->parent(), static_cast<QAccessibleInterface*>(0));
+ QCOMPARE(interface->focusChild(), static_cast<QAccessibleInterface*>(0));
+ QCOMPARE(interface->indexOfChild(0), -1);
+ QCOMPARE(interface->child(0), static_cast<QAccessibleInterface*>(0));
+ QCOMPARE(interface->child(-1), static_cast<QAccessibleInterface*>(0));
+ QCOMPARE(interface->child(1), static_cast<QAccessibleInterface*>(0));
+ QCOMPARE(interface->childCount(), 0);
+
+ QWidget widget;
+ widget.show();
+ qApp->setActiveWindow(&widget);
+ QVERIFY(QTest::qWaitForWindowActive(&widget));
+
+ QAIPtr widgetIface(QAccessible::queryAccessibleInterface(&widget));
+ QCOMPARE(interface->childCount(), 1);
+ QAIPtr focus(interface->focusChild());
+ QCOMPARE(focus->object(), &widget);
+ QCOMPARE(interface->indexOfChild(0), -1);
+ QCOMPARE(interface->indexOfChild(widgetIface.data()), 0);
+ QAIPtr child(interface->child(0));
+ QCOMPARE(child->object(), &widget);
+ QCOMPARE(interface->child(-1), static_cast<QAccessibleInterface*>(0));
+ QCOMPARE(interface->child(1), static_cast<QAccessibleInterface*>(0));
+ }
+ QTestAccessibility::clearEvents();
}
void tst_QAccessibility::mainWindowTest()
@@ -2702,6 +2732,76 @@ void tst_QAccessibility::tableTest()
QCOMPARE(table2->rowDescription(1), QString("v2"));
QCOMPARE(table2->rowDescription(2), QString("v3"));
+ tableView->clearSelection();
+ tableView->setSelectionBehavior(QAbstractItemView::SelectItems);
+ tableView->setSelectionMode(QAbstractItemView::SingleSelection);
+ QVERIFY(!table2->selectRow(0));
+ QVERIFY(!table2->isRowSelected(0));
+ tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
+ QVERIFY(table2->selectRow(0));
+ QVERIFY(table2->selectRow(1));
+ QVERIFY(!table2->isRowSelected(0));
+ tableView->setSelectionMode(QAbstractItemView::MultiSelection);
+ QVERIFY(table2->selectRow(0));
+ QVERIFY(table2->isRowSelected(1));
+ QVERIFY(table2->unselectRow(0));
+ QVERIFY(!table2->isRowSelected(0));
+ tableView->setSelectionBehavior(QAbstractItemView::SelectColumns);
+ QVERIFY(!table2->selectRow(0));
+ QVERIFY(!table2->isRowSelected(0));
+ tableView->clearSelection();
+ QCOMPARE(table2->selectedColumnCount(), 0);
+ QCOMPARE(table2->selectedRowCount(), 0);
+ QVERIFY(table2->selectColumn(1));
+ QVERIFY(table2->isColumnSelected(1));
+ tableView->clearSelection();
+ tableView->setSelectionMode(QAbstractItemView::ContiguousSelection);
+ table2->selectColumn(0);
+ table2->selectColumn(2);
+ QVERIFY(!(table2->isColumnSelected(2) && table2->isColumnSelected(0)));
+ tableView->clearSelection();
+ tableView->setSelectionBehavior(QAbstractItemView::SelectItems);
+ tableView->setSelectionMode(QAbstractItemView::MultiSelection);
+ table2->selectColumn(1);
+ table2->selectRow(1);
+ QVERIFY(table2->isColumnSelected(1));
+ QVERIFY(table2->isRowSelected(1));
+
+ QAIPtr cell4(table2->cellAt(2,2));
+ QVERIFY(cell1->actionInterface());
+ QVERIFY(cell1->tableCellInterface());
+
+ tableView->clearSelection();
+ tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
+ tableView->setSelectionMode(QAbstractItemView::SingleSelection);
+ QVERIFY(!cell1->tableCellInterface()->isSelected());
+ QVERIFY(cell1->actionInterface()->actionNames().contains(QAccessibleActionInterface::toggleAction()));
+ cell1->actionInterface()->doAction(QAccessibleActionInterface::toggleAction());
+ QVERIFY(cell2->tableCellInterface()->isSelected());
+
+ tableView->clearSelection();
+ tableView->setSelectionBehavior(QAbstractItemView::SelectColumns);
+ cell3->actionInterface()->doAction(QAccessibleActionInterface::toggleAction());
+ QVERIFY(cell4->tableCellInterface()->isSelected());
+
+ tableView->clearSelection();
+ tableView->setSelectionBehavior(QAbstractItemView::SelectItems);
+ tableView->setSelectionMode(QAbstractItemView::SingleSelection);
+ cell1->actionInterface()->doAction(QAccessibleActionInterface::toggleAction());
+ QVERIFY(cell1->tableCellInterface()->isSelected());
+ cell2->actionInterface()->doAction(QAccessibleActionInterface::toggleAction());
+ QVERIFY(!cell1->tableCellInterface()->isSelected());
+
+ tableView->clearSelection();
+ tableView->setSelectionMode(QAbstractItemView::MultiSelection);
+ cell1->actionInterface()->doAction(QAccessibleActionInterface::toggleAction());
+ cell2->actionInterface()->doAction(QAccessibleActionInterface::toggleAction());
+ QVERIFY(cell1->tableCellInterface()->isSelected());
+ QVERIFY(cell2->tableCellInterface()->isSelected());
+ cell2->actionInterface()->doAction(QAccessibleActionInterface::toggleAction());
+ QVERIFY(cell1->tableCellInterface()->isSelected());
+ QVERIFY(!cell2->tableCellInterface()->isSelected());
+
delete tableView;
QTestAccessibility::clearEvents();
diff --git a/tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp b/tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp
index c6cc50d97f..756a899b1b 100644
--- a/tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp
+++ b/tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp
@@ -82,7 +82,7 @@ public slots:
QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile"));
if (zeroCopy)
request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 10*1024*1024);
-
+
QNetworkReply *reply = netmanager.get(
QNetworkRequest(
QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/bigfile")
diff --git a/tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp b/tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp
index 5bcaaf5543..68db218164 100644
--- a/tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp
+++ b/tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp
@@ -133,7 +133,7 @@ void compareScreenshots(const QString &image1, const QString &image2)
QPainter p1(&screenShot);
QPainter p2(&original);
- //screenShot.save("scr1.png", "PNG");
+ //screenShot.save("scr1.png", "PNG");
p1.fillRect(0, 0, desktopFrameRect.width(), desktopClientRect.y(), Qt::black);
p2.fillRect(0, 0, desktopFrameRect.width(), desktopClientRect.y(), Qt::black);
diff --git a/tests/auto/other/windowsmobile/testQMenuBar/main.cpp b/tests/auto/other/windowsmobile/testQMenuBar/main.cpp
index 64f87dc080..a96966a451 100644
--- a/tests/auto/other/windowsmobile/testQMenuBar/main.cpp
+++ b/tests/auto/other/windowsmobile/testQMenuBar/main.cpp
@@ -89,7 +89,7 @@ int main(int argc, char * argv[])
optionsMenu->addMenu("Settings");
optionsMenu->addMenu("Standard");
optionsMenu->addMenu("Extended");
-
+
QMenu *subMenu = helpMenu->addMenu("Help");
subMenu->addAction("Index");
subMenu->addSeparator();
diff --git a/tests/auto/sql/kernel/qsql/tst_qsql.cpp b/tests/auto/sql/kernel/qsql/tst_qsql.cpp
index bb00f52969..bc6b36931a 100644
--- a/tests/auto/sql/kernel/qsql/tst_qsql.cpp
+++ b/tests/auto/sql/kernel/qsql/tst_qsql.cpp
@@ -56,7 +56,7 @@
class tst_QSql : public QObject
{
-Q_OBJECT
+ Q_OBJECT
public:
tst_QSql();
@@ -105,7 +105,6 @@ void tst_QSql::cleanup()
{
}
-
// this is a very basic test for drivers that cannot create/delete tables
// it can be used while developing new drivers,
// it's original purpose is to test ODBC Text datasources that are basically
@@ -120,35 +119,34 @@ void tst_QSql::basicDriverTest()
tst_Databases dbs;
dbs.open();
- foreach( const QString& dbName, dbs.dbNames )
- {
- QSqlDatabase db = QSqlDatabase::database( dbName );
- QVERIFY_SQL( db, isValid() );
+ foreach (const QString& dbName, dbs.dbNames) {
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ QVERIFY_SQL(db, isValid());
QStringList tables = db.tables();
QString tableName;
- if ( tables.contains( "qtest_basictest.txt" ) )
+ if (tables.contains("qtest_basictest.txt"))
tableName = "qtest_basictest.txt";
- else if ( tables.contains( "qtest_basictest" ) )
+ else if (tables.contains("qtest_basictest"))
tableName = "qtest_basictest";
- else if ( tables.contains( "QTEST_BASICTEST" ) )
+ else if (tables.contains("QTEST_BASICTEST"))
tableName = "QTEST_BASICTEST";
else {
- QVERIFY( 1 );
+ QVERIFY(1);
continue;
}
- qDebug("Testing: %s", qPrintable(tst_Databases::dbToString( db )));
+ qDebug("Testing: %s", qPrintable(tst_Databases::dbToString(db)));
- QSqlRecord rInf = db.record( tableName );
- QCOMPARE( rInf.count(), 2 );
- QCOMPARE( rInf.fieldName( 0 ).toLower(), QString( "id" ) );
- QCOMPARE( rInf.fieldName( 1 ).toLower(), QString( "name" ) );
+ QSqlRecord rInf = db.record(tableName);
+ QCOMPARE(rInf.count(), 2);
+ QCOMPARE(rInf.fieldName(0).toLower(), QString("id"));
+ QCOMPARE(rInf.fieldName(1).toLower(), QString("name"));
}
dbs.close();
- QVERIFY( 1 ); // make sure the test doesn't fail if no database drivers are there
+ QVERIFY(1); // make sure the test doesn't fail if no database drivers are there
}
// make sure that the static stuff will be deleted
@@ -159,18 +157,18 @@ void tst_QSql::open()
int argc = 1;
const char *argv[] = {"test"};
int count = -1;
- for ( i = 0; i < 10; ++i ) {
+ for (i = 0; i < 10; ++i) {
QGuiApplication app(argc, const_cast<char **>(argv), false);
- tst_Databases dbs;
-
- dbs.open();
- if ( count == -1 )
- // first iteration: see how many dbs are open
- count = (int) dbs.dbNames.count();
- else
- // next iterations: make sure all are opened again
- QCOMPARE( count, (int)dbs.dbNames.count() );
- dbs.close();
+ tst_Databases dbs;
+
+ dbs.open();
+ if (count == -1)
+ // first iteration: see how many dbs are open
+ count = (int) dbs.dbNames.count();
+ else
+ // next iterations: make sure all are opened again
+ QCOMPARE(count, (int)dbs.dbNames.count());
+ dbs.close();
}
}
@@ -191,21 +189,21 @@ void tst_QSql::concurrentAccess()
tst_Databases dbs;
dbs.open();
- foreach ( const QString& dbName, dbs.dbNames ) {
- QSqlDatabase db = QSqlDatabase::database( dbName );
- QVERIFY( db.isValid() );
+ foreach (const QString& dbName, dbs.dbNames) {
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ QVERIFY(db.isValid());
if (tst_Databases::isMSAccess(db))
continue;
- QSqlDatabase ndb = QSqlDatabase::addDatabase( db.driverName(), "tst_QSql::concurrentAccess" );
- ndb.setDatabaseName( db.databaseName() );
- ndb.setHostName( db.hostName() );
- ndb.setPort( db.port() );
- ndb.setUserName( db.userName() );
- ndb.setPassword( db.password() );
- QVERIFY_SQL( ndb, open() );
+ QSqlDatabase ndb = QSqlDatabase::addDatabase(db.driverName(), "tst_QSql::concurrentAccess");
+ ndb.setDatabaseName(db.databaseName());
+ ndb.setHostName(db.hostName());
+ ndb.setPort(db.port());
+ ndb.setUserName(db.userName());
+ ndb.setPassword(db.password());
+ QVERIFY_SQL(ndb, open());
- QCOMPARE( db.tables(), ndb.tables() );
+ QCOMPARE(db.tables(), ndb.tables());
}
// no database servers installed - don't fail
QVERIFY(1);
@@ -222,41 +220,41 @@ void tst_QSql::openErrorRecovery()
dbs.addDbs();
if (dbs.dbNames.isEmpty())
QSKIP("No database drivers installed");
- foreach ( const QString& dbName, dbs.dbNames ) {
- QSqlDatabase db = QSqlDatabase::database( dbName, false );
- CHECK_DATABASE( db );
+ foreach (const QString& dbName, dbs.dbNames) {
+ QSqlDatabase db = QSqlDatabase::database(dbName, false);
+ CHECK_DATABASE(db);
- QString userName = db.userName();
- QString password = db.password();
+ QString userName = db.userName();
+ QString password = db.password();
- // force an open error
- if ( db.open( "dummy130977", "doesnt_exist" ) ) {
+ // force an open error
+ if (db.open("dummy130977", "doesnt_exist")) {
qDebug("Promiscuous database server without access control - test skipped for %s",
- qPrintable(tst_Databases::dbToString( db )) );
- QVERIFY(1);
- continue;
- }
-
- QFAIL_SQL( db, isOpen() );
- QVERIFY_SQL( db, isOpenError() );
-
- // now open it
- if ( !db.open( userName, password ) ) {
- qDebug() << "Could not open Database " << tst_Databases::dbToString( db ) <<
- ". Assuming DB is down, skipping... (Error: " <<
- tst_Databases::printError( db.lastError() ) << ")";
- continue;
- }
- QVERIFY_SQL( db, open( userName, password ) );
- QVERIFY_SQL( db, isOpen() );
- QFAIL_SQL( db, isOpenError() );
- db.close();
- QFAIL_SQL( db, isOpen() );
-
- // force another open error
- QFAIL_SQL( db, open( "dummy130977", "doesnt_exist" ) );
- QFAIL_SQL( db, isOpen() );
- QVERIFY_SQL( db, isOpenError() );
+ qPrintable(tst_Databases::dbToString(db)));
+ QVERIFY(1);
+ continue;
+ }
+
+ QFAIL_SQL(db, isOpen());
+ QVERIFY_SQL(db, isOpenError());
+
+ // now open it
+ if (!db.open(userName, password)) {
+ qDebug() << "Could not open Database " << tst_Databases::dbToString(db) <<
+ ". Assuming DB is down, skipping... (Error: " <<
+ tst_Databases::printError(db.lastError()) << ")";
+ continue;
+ }
+ QVERIFY_SQL(db, open(userName, password));
+ QVERIFY_SQL(db, isOpen());
+ QFAIL_SQL(db, isOpenError());
+ db.close();
+ QFAIL_SQL(db, isOpen());
+
+ // force another open error
+ QFAIL_SQL(db, open("dummy130977", "doesnt_exist"));
+ QFAIL_SQL(db, isOpen());
+ QVERIFY_SQL(db, isOpenError());
}
}
@@ -266,13 +264,13 @@ void tst_QSql::registerSqlDriver()
const char *argv[] = {"test"};
QGuiApplication app(argc, const_cast<char **>(argv), false);
- QSqlDatabase::registerSqlDriver( "QSQLTESTDRIVER", new QSqlDriverCreator<QSqlNullDriver> );
- QVERIFY( QSqlDatabase::drivers().contains( "QSQLTESTDRIVER" ) );
+ QSqlDatabase::registerSqlDriver("QSQLTESTDRIVER", new QSqlDriverCreator<QSqlNullDriver>);
+ QVERIFY(QSqlDatabase::drivers().contains("QSQLTESTDRIVER"));
- QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLTESTDRIVER" );
- QVERIFY( db.isValid() );
+ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLTESTDRIVER");
+ QVERIFY(db.isValid());
- QCOMPARE( db.tables(), QStringList() );
+ QCOMPARE(db.tables(), QStringList());
}
QTEST_APPLESS_MAIN(tst_QSql)
diff --git a/tests/auto/sql/kernel/qsqlresult/testsqldriver.h b/tests/auto/sql/kernel/qsqlresult/testsqldriver.h
index 7040ddf360..9d435a0f7c 100644
--- a/tests/auto/sql/kernel/qsqlresult/testsqldriver.h
+++ b/tests/auto/sql/kernel/qsqlresult/testsqldriver.h
@@ -86,6 +86,8 @@ public:
case QSqlDriver::PreparedQueries:
case QSqlDriver::NamedPlaceholders:
return true;
+ default:
+ break;
}
return false;
}
diff --git a/tests/auto/test.pl b/tests/auto/test.pl
index 568dbeec54..72b7e6aa17 100755
--- a/tests/auto/test.pl
+++ b/tests/auto/test.pl
@@ -42,6 +42,7 @@
use strict;
use Cwd;
+use warnings;
# Usage: test.pl <SearchPath> <ExecutionMode> <TestResults> <Timeout [Default 300 seconds]>
# Variable declarations to keep strict happy
@@ -56,8 +57,8 @@ our $timeoutChildren;
our $totalExecuted;
our $totalStarted;
our $totalTimedOut;
-our $next;
our $currentDirectory;
+our $testRoot;
# Where do we run this script? What directory?
$SEARCH_PATH=$ARGV[0];
@@ -67,7 +68,7 @@ if(!$SEARCH_PATH)
exit(0);
}
-# We have four options:
+# We have four options:
# 'U': Unix
# 'W': Windows
# 'M': Mac
@@ -86,8 +87,8 @@ if($EXEC_MODE =~ /^U$/)
} elsif($EXEC_MODE =~ /^M$/)
{
print "Using OSX execution mode\n";
- $EXE_PREFIX="/Content/MacOS/";
- $EXE_SUFFIX="";
+ $EXE_PREFIX="/Contents/MacOS/";
+ $EXE_SUFFIX=".app";
} elsif($EXEC_MODE =~ /^E$/)
{
print "Using embedded execution mode\n";
@@ -101,24 +102,18 @@ if($EXEC_MODE =~ /^U$/)
# We get the current directory, we 'll need it afterwards
$currentDirectory = getcwd();
+$testRoot = Cwd::abs_path($SEARCH_PATH);
+
# We assume that by default goes to "reports" unless the user specifies it.
$REPORTDIR = $ARGV[2];
if(!$REPORTDIR)
{
- if($SEARCH_PATH =~ /^\.$/)
- {
-# '.' ie current directory
- $REPORTDIR = $currentDirectory."/reports";
- } elsif($SEARCH_PATH =~ /^\//) {
-# Absolute path
- $REPORTDIR = $SEARCH_PATH."/reports";
- } else {
-# Relative path
- $REPORTDIR = $currentDirectory.$SEARCH_PATH."/reports";
- }
+ $REPORTDIR = $testRoot."/reports";
+ mkdir $REPORTDIR;
+} else {
+ mkdir $REPORTDIR;
+ $REPORTDIR = Cwd::abs_path($REPORTDIR);
}
-# Let's create the directory
-mkdir $REPORTDIR;
# If given we use it, otherwise we default to 300 seconds.
$TIMEOUT = $ARGV[3];
@@ -139,23 +134,51 @@ $totalTimedOut = 0;
$SIG{'CHLD'} = 'handleDeath';
$SIG{'ALRM'} = 'handleTimeout';
-while ($next = <$SEARCH_PATH/*>)
-{
- if( -d $next )
+handleDir($testRoot);
+
+print " ** Statistics ** \n";
+print " Tests started: $totalStarted \n";
+print " Tests executed: $totalExecuted \n";
+print " Tests timed out: $totalTimedOut \n";
+
+sub handleDir {
+
+ my ($dir) = @_;
+ my $currentDir = getcwd();
+
+ chdir($dir) || die("Could not chdir to $dir");
+ my @components;
+ my $command;
+ @components = split(/\//, $dir);
+ my $component = $components[$#components];
+
+ $command = "tst_".$component;
+
+ if ( -e $command.$EXE_SUFFIX )
{
- print "Examining $next \n";
- chdir($next) || die("Could not chdir to $next");
- my @components;
- my $command;
- @components = split(/\//, $next);
- if($EXEC_MODE =~ /^M$/)
+ executeTestCurrentDir($command);
+ } else {
+ opendir(DIR, $dir);
+ my @files = readdir(DIR);
+ closedir DIR;
+ my $file;
+ foreach $file (@files)
{
- $command = "tst_".$components[1].".app";
- } else {
- $command = "tst_".$components[1];
+ #skip hidden files
+ next if (substr($file,0,1) eq ".");
+
+ if ( -d $dir."/".$file)
+ {
+ handleDir($dir."/".$file)
+ }
+
}
- if( -e $command)
- {
+ }
+ chdir($currentDir);
+}
+
+sub executeTestCurrentDir {
+ my ($command) = @_;
print "Executing $command \n";
my $myPid;
$myPid = fork();
@@ -164,11 +187,12 @@ while ($next = <$SEARCH_PATH/*>)
my $realCommand;
if($EXEC_MODE =~/^M$/)
{
- $realCommand = "./".$command.".app".$EXE_PREFIX.$command;
+ $realCommand = "./".$command.$EXE_SUFFIX.$EXE_PREFIX.$command;
} else {
$realCommand = $EXE_PREFIX.$command.$EXE_SUFFIX;
}
- my $outputRedirection = $REPORTDIR."/".$command.".xml";
+ my $outputRedirection = $REPORTDIR."/".$command.$EXE_SUFFIX.".xml";
+
if($EXEC_MODE =~ /^E$/)
{
exec($realCommand, "-qws", "-xml", "-o", $outputRedirection);
@@ -210,15 +234,8 @@ while ($next = <$SEARCH_PATH/*>)
} else {
print "Problems trying to execute $command";
}
- }
- }
- chdir($currentDirectory);
}
-print " ** Statistics ** \n";
-print " Tests started: $totalStarted \n";
-print " Tests executed: $totalExecuted \n";
-print " Tests timed out: $totalTimedOut \n";
# This procedure takes care of handling dead children on due time
sub handleDeath {
diff --git a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
index 6506479d1d..e9ad1778fa 100644
--- a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
+++ b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
@@ -136,6 +136,8 @@ private slots:
void compare_tostring_data();
void compareQStringLists();
void compareQStringLists_data();
+ void compareQListInt();
+ void compareQListDouble();
void compareQPixmaps();
void compareQPixmaps_data();
void compareQImages();
@@ -307,6 +309,20 @@ void tst_Cmptest::compareQStringLists()
QCOMPARE(opA, opB);
}
+void tst_Cmptest::compareQListInt()
+{
+ QList<int> int1; int1 << 1 << 2 << 3;
+ QList<int> int2; int2 << 1 << 2 << 4;
+ QCOMPARE(int1, int2);
+}
+
+void tst_Cmptest::compareQListDouble()
+{
+ QList<double> double1; double1 << 1.5 << 2 << 3;
+ QList<double> double2; double2 << 1 << 2 << 4;
+ QCOMPARE(double1, double2);
+}
+
void tst_Cmptest::compareQPixmaps_data()
{
QTest::addColumn<QPixmap>("opA");
diff --git a/tests/auto/testlib/selftests/datetime/tst_datetime.cpp b/tests/auto/testlib/selftests/datetime/tst_datetime.cpp
index 25e50df72a..39ba9f5908 100644
--- a/tests/auto/testlib/selftests/datetime/tst_datetime.cpp
+++ b/tests/auto/testlib/selftests/datetime/tst_datetime.cpp
@@ -69,7 +69,7 @@ void tst_DateTime::qurl() const
{
QFETCH(QUrl, operandA);
QFETCH(QUrl, operandB);
-
+
QCOMPARE(operandA, operandB);
}
diff --git a/tests/auto/testlib/selftests/expected_cmptest.lightxml b/tests/auto/testlib/selftests/expected_cmptest.lightxml
index 83b2e6e137..54c5bb85f0 100644
--- a/tests/auto/testlib/selftests/expected_cmptest.lightxml
+++ b/tests/auto/testlib/selftests/expected_cmptest.lightxml
@@ -49,35 +49,49 @@
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[last item different]]></DataTag>
- <Description><![CDATA[Compared QStringLists differ at index 2.
+ <Description><![CDATA[Compared lists differ at index 2.
Actual (opA): 'string3'
Expected (opB): 'DIFFERS']]></Description>
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[second-last item different]]></DataTag>
- <Description><![CDATA[Compared QStringLists differ at index 2.
+ <Description><![CDATA[Compared lists differ at index 2.
Actual (opA): 'string3'
Expected (opB): 'DIFFERS']]></Description>
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[prefix]]></DataTag>
- <Description><![CDATA[Compared QStringLists have different sizes.
+ <Description><![CDATA[Compared lists have different sizes.
Actual (opA) size: '2'
Expected (opB) size: '1']]></Description>
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[short list second]]></DataTag>
- <Description><![CDATA[Compared QStringLists have different sizes.
+ <Description><![CDATA[Compared lists have different sizes.
Actual (opA) size: '12'
Expected (opB) size: '1']]></Description>
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[short list first]]></DataTag>
- <Description><![CDATA[Compared QStringLists have different sizes.
+ <Description><![CDATA[Compared lists have different sizes.
Actual (opA) size: '1'
Expected (opB) size: '12']]></Description>
</Incident>
</TestFunction>
+<TestFunction name="compareQListInt">
+<Incident type="fail" file="tst_cmptest.cpp" line="316">
+ <Description><![CDATA[Compared lists differ at index 2.
+ Actual (int1): '3'
+ Expected (int2): '4']]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="compareQListDouble">
+<Incident type="fail" file="tst_cmptest.cpp" line="323">
+ <Description><![CDATA[Compared lists differ at index 0.
+ Actual (double1): '1.5'
+ Expected (double2): '1']]></Description>
+</Incident>
+</TestFunction>
<TestFunction name="compareQPixmaps">
<Incident type="pass" file="" line="0">
<DataTag><![CDATA[both null]]></DataTag>
diff --git a/tests/auto/testlib/selftests/expected_cmptest.txt b/tests/auto/testlib/selftests/expected_cmptest.txt
index de666ed8b1..d41da53b06 100644
--- a/tests/auto/testlib/selftests/expected_cmptest.txt
+++ b/tests/auto/testlib/selftests/expected_cmptest.txt
@@ -22,26 +22,34 @@ FAIL! : tst_Cmptest::compare_tostring(both non-null user type) Compared values
Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(214)]
PASS : tst_Cmptest::compareQStringLists(empty lists)
PASS : tst_Cmptest::compareQStringLists(equal lists)
-FAIL! : tst_Cmptest::compareQStringLists(last item different) Compared QStringLists differ at index 2.
+FAIL! : tst_Cmptest::compareQStringLists(last item different) Compared lists differ at index 2.
Actual (opA): 'string3'
Expected (opB): 'DIFFERS'
Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(308)]
-FAIL! : tst_Cmptest::compareQStringLists(second-last item different) Compared QStringLists differ at index 2.
+FAIL! : tst_Cmptest::compareQStringLists(second-last item different) Compared lists differ at index 2.
Actual (opA): 'string3'
Expected (opB): 'DIFFERS'
Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(308)]
-FAIL! : tst_Cmptest::compareQStringLists(prefix) Compared QStringLists have different sizes.
+FAIL! : tst_Cmptest::compareQStringLists(prefix) Compared lists have different sizes.
Actual (opA) size: '2'
Expected (opB) size: '1'
Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(308)]
-FAIL! : tst_Cmptest::compareQStringLists(short list second) Compared QStringLists have different sizes.
+FAIL! : tst_Cmptest::compareQStringLists(short list second) Compared lists have different sizes.
Actual (opA) size: '12'
Expected (opB) size: '1'
Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(308)]
-FAIL! : tst_Cmptest::compareQStringLists(short list first) Compared QStringLists have different sizes.
+FAIL! : tst_Cmptest::compareQStringLists(short list first) Compared lists have different sizes.
Actual (opA) size: '1'
Expected (opB) size: '12'
Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(308)]
+FAIL! : tst_Cmptest::compareQListInt() Compared lists differ at index 2.
+ Actual (int1): '3'
+ Expected (int2): '4'
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(316)]
+FAIL! : tst_Cmptest::compareQListDouble() Compared lists differ at index 0.
+ Actual (double1): '1.5'
+ Expected (double2): '1'
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(323)]
PASS : tst_Cmptest::compareQPixmaps(both null)
FAIL! : tst_Cmptest::compareQPixmaps(one null) Compared QPixmaps differ.
Actual (opA).isNull(): 1
@@ -79,5 +87,5 @@ FAIL! : tst_Cmptest::compareQImages(different format) Compared QImages differ i
FAIL! : tst_Cmptest::compareQImages(different pixels) Compared values are not the same
Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp(360)]
PASS : tst_Cmptest::cleanupTestCase()
-Totals: 11 passed, 18 failed, 0 skipped
+Totals: 11 passed, 20 failed, 0 skipped
********* Finished testing of tst_Cmptest *********
diff --git a/tests/auto/testlib/selftests/expected_cmptest.xml b/tests/auto/testlib/selftests/expected_cmptest.xml
index 0e5b6de335..ccab93d7c0 100644
--- a/tests/auto/testlib/selftests/expected_cmptest.xml
+++ b/tests/auto/testlib/selftests/expected_cmptest.xml
@@ -51,35 +51,49 @@
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[last item different]]></DataTag>
- <Description><![CDATA[Compared QStringLists differ at index 2.
+ <Description><![CDATA[Compared lists differ at index 2.
Actual (opA): 'string3'
Expected (opB): 'DIFFERS']]></Description>
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[second-last item different]]></DataTag>
- <Description><![CDATA[Compared QStringLists differ at index 2.
+ <Description><![CDATA[Compared lists differ at index 2.
Actual (opA): 'string3'
Expected (opB): 'DIFFERS']]></Description>
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[prefix]]></DataTag>
- <Description><![CDATA[Compared QStringLists have different sizes.
+ <Description><![CDATA[Compared lists have different sizes.
Actual (opA) size: '2'
Expected (opB) size: '1']]></Description>
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[short list second]]></DataTag>
- <Description><![CDATA[Compared QStringLists have different sizes.
+ <Description><![CDATA[Compared lists have different sizes.
Actual (opA) size: '12'
Expected (opB) size: '1']]></Description>
</Incident>
<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp" line="308">
<DataTag><![CDATA[short list first]]></DataTag>
- <Description><![CDATA[Compared QStringLists have different sizes.
+ <Description><![CDATA[Compared lists have different sizes.
Actual (opA) size: '1'
Expected (opB) size: '12']]></Description>
</Incident>
</TestFunction>
+<TestFunction name="compareQListInt">
+<Incident type="fail" file="tst_cmptest.cpp" line="316">
+ <Description><![CDATA[Compared lists differ at index 2.
+ Actual (int1): '3'
+ Expected (int2): '4']]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="compareQListDouble">
+<Incident type="fail" file="tst_cmptest.cpp" line="323">
+ <Description><![CDATA[Compared lists differ at index 0.
+ Actual (double1): '1.5'
+ Expected (double2): '1']]></Description>
+</Incident>
+</TestFunction>
<TestFunction name="compareQPixmaps">
<Incident type="pass" file="" line="0">
<DataTag><![CDATA[both null]]></DataTag>
diff --git a/tests/auto/testlib/selftests/expected_cmptest.xunitxml b/tests/auto/testlib/selftests/expected_cmptest.xunitxml
index 33e78a5290..0cb88147b0 100644
--- a/tests/auto/testlib/selftests/expected_cmptest.xunitxml
+++ b/tests/auto/testlib/selftests/expected_cmptest.xunitxml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="0" failures="18" tests="8" name="tst_Cmptest">
+<testsuite errors="0" failures="20" tests="10" name="tst_Cmptest">
<properties>
<property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
<property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
@@ -22,22 +22,32 @@
Expected (expected): QVariant(PhonyClass,&lt;value not representable as string&gt;)" result="fail"/>
</testcase>
<testcase result="fail" name="compareQStringLists">
- <failure tag="last item different" message="Compared QStringLists differ at index 2.
+ <failure tag="last item different" message="Compared lists differ at index 2.
Actual (opA): &apos;string3&apos;
Expected (opB): &apos;DIFFERS&apos;" result="fail"/>
- <failure tag="second&#x002D;last item different" message="Compared QStringLists differ at index 2.
+ <failure tag="second&#x002D;last item different" message="Compared lists differ at index 2.
Actual (opA): &apos;string3&apos;
Expected (opB): &apos;DIFFERS&apos;" result="fail"/>
- <failure tag="prefix" message="Compared QStringLists have different sizes.
+ <failure tag="prefix" message="Compared lists have different sizes.
Actual (opA) size: &apos;2&apos;
Expected (opB) size: &apos;1&apos;" result="fail"/>
- <failure tag="short list second" message="Compared QStringLists have different sizes.
+ <failure tag="short list second" message="Compared lists have different sizes.
Actual (opA) size: &apos;12&apos;
Expected (opB) size: &apos;1&apos;" result="fail"/>
- <failure tag="short list first" message="Compared QStringLists have different sizes.
+ <failure tag="short list first" message="Compared lists have different sizes.
Actual (opA) size: &apos;1&apos;
Expected (opB) size: &apos;12&apos;" result="fail"/>
</testcase>
+ <testcase result="fail" name="compareQListInt">
+ <failure message="Compared lists differ at index 2.
+ Actual (int1): &apos;3&apos;
+ Expected (int2): &apos;4&apos;" result="fail"/>
+ </testcase>
+ <testcase result="fail" name="compareQListDouble">
+ <failure message="Compared lists differ at index 0.
+ Actual (double1): &apos;1.5&apos;
+ Expected (double2): &apos;1&apos;" result="fail"/>
+ </testcase>
<testcase result="fail" name="compareQPixmaps">
<failure tag="one null" message="Compared QPixmaps differ.
Actual (opA).isNull(): 1
diff --git a/tests/auto/testlib/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp
index 4b19ee57ea..441254c126 100644
--- a/tests/auto/testlib/selftests/tst_selftests.cpp
+++ b/tests/auto/testlib/selftests/tst_selftests.cpp
@@ -563,6 +563,9 @@ void tst_Selftests::doRunSubTest(QString const& subdir, QStringList const& logge
&& subdir != QLatin1String("cmptest") // QImage comparison requires QGuiApplication
&& subdir != QLatin1String("fetchbogus")
&& subdir != QLatin1String("xunit")
+#ifdef Q_CC_MINGW
+ && subdir != QLatin1String("silent") // calls qFatal()
+#endif
&& subdir != QLatin1String("benchlibcallgrind"))
QVERIFY2(err.isEmpty(), err.constData());
@@ -570,8 +573,8 @@ void tst_Selftests::doRunSubTest(QString const& subdir, QStringList const& logge
QString logger = loggers[n];
QList<QByteArray> res = splitLines(actualOutputs[n]);
QList<QByteArray> exp = expectedResult(subdir, logger);
-#ifdef Q_CC_MSVC
- // MSVC formats double numbers differently
+#if defined (Q_CC_MSVC) || defined(Q_CC_MINGW)
+ // MSVC, MinGW format double numbers differently
if (n == 0 && subdir == QStringLiteral("float")) {
for (int i = 0; i < exp.size(); ++i) {
exp[i].replace("e-07", "e-007");
diff --git a/tests/auto/tools/moc/dollars.h b/tests/auto/tools/moc/dollars.h
new file mode 100644
index 0000000000..8fab45559c
--- /dev/null
+++ b/tests/auto/tools/moc/dollars.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Olivier Goffart <ogoffart@woboq.com>
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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$
+**
+****************************************************************************/
+
+/* both GCC and clang allow $ in identifiers
+ * So moc should not throw a parse error if it parses a file that contains such identifiers
+ */
+
+#include <QObject>
+
+#define macro$1 function1
+#define $macro2 function2
+
+namespace $NS {
+ class $CLS : public QObject
+ {
+ Q_PROPERTY(int rich$ MEMBER m_$rich$)
+ Q_PROPERTY(int money$$$ READ $$$money$$$ WRITE $$$setMoney$$$)
+ Q_OBJECT
+
+ int m_$rich$;
+ int m_money;
+ int $$$money$$$() { return m_money; }
+ int $$$setMoney$$$(int m) { return m_money = m; }
+
+ Q_SIGNALS:
+ void macro$1 ();
+ void $macro2 ();
+
+ void function$3 ($CLS * cl$s);
+ };
+}
+
diff --git a/tests/auto/tools/moc/gadgetwithnoenums.h b/tests/auto/tools/moc/gadgetwithnoenums.h
index 5a9a789471..0da75e8eb1 100644
--- a/tests/auto/tools/moc/gadgetwithnoenums.h
+++ b/tests/auto/tools/moc/gadgetwithnoenums.h
@@ -43,20 +43,24 @@
#include <QObject>
-class GadgetWithNoEnums {
+class GadgetWithNoEnums
+{
Q_GADGET
- public:
- GadgetWithNoEnums() {}
- virtual ~GadgetWithNoEnums() {}
-};
-
-class DerivedGadgetWithEnums : public GadgetWithNoEnums {
- Q_GADGET
- Q_ENUMS( FooEnum )
- public:
- enum FooEnum { FooValue };
- DerivedGadgetWithEnums() {}
- ~DerivedGadgetWithEnums() {}
+
+public:
+ GadgetWithNoEnums() {}
+ virtual ~GadgetWithNoEnums() {}
+};
+
+class DerivedGadgetWithEnums : public GadgetWithNoEnums
+{
+ Q_GADGET
+ Q_ENUMS( FooEnum )
+
+public:
+ enum FooEnum { FooValue };
+ DerivedGadgetWithEnums() {}
+ ~DerivedGadgetWithEnums() {}
};
#endif
diff --git a/tests/auto/tools/moc/moc.pro b/tests/auto/tools/moc/moc.pro
index 772086d3c4..1600c458b5 100644
--- a/tests/auto/tools/moc/moc.pro
+++ b/tests/auto/tools/moc/moc.pro
@@ -11,7 +11,6 @@ TARGET = tst_moc
INCLUDEPATH += testproject/include testproject
-DEFINES += SRCDIR=\\\"$$PWD\\\"
cross_compile: DEFINES += MOC_CROSS_COMPILED
HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-newlines.h oldstyle-casts.h \
@@ -27,6 +26,7 @@ HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-n
if(*-g++*|*-icc*|*-clang*|*-llvm):!irix-*:!win32-*: HEADERS += os9-newlines.h win-newlines.h
+if(*-g++*|*-clang*): HEADERS += dollars.h
SOURCES += tst_moc.cpp
QT -= gui
diff --git a/tests/auto/tools/moc/task189996.h b/tests/auto/tools/moc/task189996.h
index 975d762fa8..01b210d6eb 100644
--- a/tests/auto/tools/moc/task189996.h
+++ b/tests/auto/tools/moc/task189996.h
@@ -43,10 +43,12 @@
#ifndef TASK189996_H
#define TASK189996_H
-#include <QObject>
-
-class InlineSlotsWithThrowDeclaration : public QObject {
- Q_OBJECT
+#include <QObject>
+
+class InlineSlotsWithThrowDeclaration : public QObject
+{
+ Q_OBJECT
+
public slots:
void a() throw() { }
void b() const throw() { }
diff --git a/tests/auto/tools/moc/template-gtgt.h b/tests/auto/tools/moc/template-gtgt.h
index baa8553103..2c2f56c34d 100644
--- a/tests/auto/tools/moc/template-gtgt.h
+++ b/tests/auto/tools/moc/template-gtgt.h
@@ -39,13 +39,13 @@
**
****************************************************************************/
template<class TYPE, size_t COUNT>
-class myTemplate :
+class myTemplate :
QString,
QVector<TYPE, QList<COUNT>>
{};
template<class TYPE, size_t COUNT>
-class myTemplate2 :
+class myTemplate2 :
QString,
QVector<TYPE, QList< (4 >> 2) >>
{};
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
index 909c220669..3cd2f1f936 100644
--- a/tests/auto/tools/moc/tst_moc.cpp
+++ b/tests/auto/tools/moc/tst_moc.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2013 Olivier Goffart <ogoffart@woboq.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the test suite of the Qt Toolkit.
@@ -447,15 +448,6 @@ public:
#endif
#endif
-static QString srcify(const char *path)
-{
-#ifndef Q_OS_IRIX
- return QString(SRCDIR) + QLatin1Char('/') + QLatin1String(path);
-#else
- return QString(QLatin1String(path));
-#endif
-}
-
class CtorTestClass : public QObject
{
Q_OBJECT
@@ -480,6 +472,8 @@ CtorTestClass::CtorTestClass(QObject *parent)
CtorTestClass::CtorTestClass(int, int, int) {}
+class PrivatePropertyTest;
+
class tst_Moc : public QObject
{
Q_OBJECT
@@ -487,9 +481,15 @@ class tst_Moc : public QObject
Q_PROPERTY(bool user1 READ user1 USER true )
Q_PROPERTY(bool user2 READ user2 USER false)
Q_PROPERTY(bool user3 READ user3 USER userFunction())
+ Q_PROPERTY(QString member1 MEMBER sMember)
+ Q_PROPERTY(QString member2 MEMBER sMember READ member2)
+ Q_PROPERTY(QString member3 MEMBER sMember WRITE setMember3)
+ Q_PROPERTY(QString member4 MEMBER sMember NOTIFY member4Changed)
+ Q_PROPERTY(QString member5 MEMBER sMember NOTIFY member5Changed)
+ Q_PROPERTY(QString member6 MEMBER sConst CONSTANT)
public:
- inline tst_Moc() {}
+ inline tst_Moc() : sConst("const") {}
private slots:
void initTestCase();
@@ -546,6 +546,9 @@ private slots:
void cxx11Enums_data();
void cxx11Enums();
void returnRefs();
+ void memberProperties_data();
+ void memberProperties();
+ void memberProperties2();
void privateSignalConnection();
void finalClasses_data();
void finalClasses();
@@ -553,6 +556,7 @@ private slots:
void explicitOverrideControl();
void autoPropertyMetaTypeRegistration();
void autoMethodArgumentMetaTypeRegistration();
+ void autoSignalSpyMetaTypeRegistration();
void parseDefines();
void preprocessorOnly();
void unterminatedFunctionMacro();
@@ -565,6 +569,8 @@ signals:
void sigWithCustomType(const MyStruct);
void constSignal1() const;
void constSignal2(int arg) const;
+ void member4Changed();
+ void member5Changed(const QString &newVal);
private:
bool user1() { return true; };
@@ -572,14 +578,23 @@ private:
bool user3() { return false; };
bool userFunction(){ return false; };
template <class T> void revisions_T();
+ QString member2() const { return sMember; }
+ void setMember3( const QString &sVal ) { sMember = sVal; }
private:
+ QString m_sourceDirectory;
QString qtIncludePath;
class PrivateClass;
+ QString sMember;
+ const QString sConst;
+ PrivatePropertyTest *pPPTest;
};
void tst_Moc::initTestCase()
{
+ const QString testHeader = QFINDTESTDATA("backslash-newlines.h");
+ QVERIFY(!testHeader.isEmpty());
+ m_sourceDirectory = QFileInfo(testHeader).absolutePath();
#if defined(Q_OS_UNIX) && !defined(QT_NO_PROCESS)
QProcess proc;
proc.start("qmake", QStringList() << "-query" << "QT_INSTALL_HEADERS");
@@ -626,7 +641,7 @@ void tst_Moc::oldStyleCasts()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.start("moc", QStringList(srcify("/oldstyle-casts.h")));
+ proc.start("moc", QStringList(m_sourceDirectory + QStringLiteral("/oldstyle-casts.h")));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
@@ -656,15 +671,16 @@ void tst_Moc::warnOnExtraSignalSlotQualifiaction()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.start("moc", QStringList(srcify("extraqualification.h")));
+ const QString header = m_sourceDirectory + QStringLiteral("/extraqualification.h");
+ proc.start("moc", QStringList(header));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
QVERIFY(!mocOut.isEmpty());
QString mocWarning = QString::fromLocal8Bit(proc.readAllStandardError());
- QCOMPARE(mocWarning, QString(SRCDIR) +
- QString("/extraqualification.h:53: Warning: Function declaration Test::badFunctionDeclaration contains extra qualification. Ignoring as signal or slot.\n") +
- QString(SRCDIR) + QString("/extraqualification.h:56: Warning: parsemaybe: Function declaration Test::anotherOne contains extra qualification. Ignoring as signal or slot.\n"));
+ QCOMPARE(mocWarning, header +
+ QString(":53: Warning: Function declaration Test::badFunctionDeclaration contains extra qualification. Ignoring as signal or slot.\n") +
+ header + QString(":56: Warning: parsemaybe: Function declaration Test::anotherOne contains extra qualification. Ignoring as signal or slot.\n"));
#else
QSKIP("Only tested on linux/gcc");
#endif
@@ -694,7 +710,7 @@ void tst_Moc::inputFileNameWithDotsButNoExtension()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.setWorkingDirectory(QString(SRCDIR) + "/task71021");
+ proc.setWorkingDirectory(m_sourceDirectory + QStringLiteral("/task71021"));
proc.start("moc", QStringList("../Header"));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
@@ -933,16 +949,16 @@ void tst_Moc::warnOnMultipleInheritance()
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
QStringList args;
- args << "-I" << qtIncludePath + "/QtGui"
- << srcify("warn-on-multiple-qobject-subclasses.h");
+ const QString header = m_sourceDirectory + QStringLiteral("/warn-on-multiple-qobject-subclasses.h");
+ args << "-I" << qtIncludePath + "/QtGui" << header;
proc.start("moc", args);
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
QVERIFY(!mocOut.isEmpty());
QString mocWarning = QString::fromLocal8Bit(proc.readAllStandardError());
- QCOMPARE(mocWarning, QString(SRCDIR) +
- QString("/warn-on-multiple-qobject-subclasses.h:53: Warning: Class Bar inherits from two QObject subclasses QWindow and Foo. This is not supported!\n"));
+ QCOMPARE(mocWarning, header +
+ QString(":53: Warning: Class Bar inherits from two QObject subclasses QWindow and Foo. This is not supported!\n"));
#else
QSKIP("Only tested on linux/gcc");
#endif
@@ -956,16 +972,16 @@ void tst_Moc::forgottenQInterface()
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
QStringList args;
- args << "-I" << qtIncludePath + "/QtCore"
- << srcify("forgotten-qinterface.h");
+ const QString header = m_sourceDirectory + QStringLiteral("/forgotten-qinterface.h");
+ args << "-I" << qtIncludePath + "/QtCore" << header;
proc.start("moc", args);
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
QVERIFY(!mocOut.isEmpty());
QString mocWarning = QString::fromLocal8Bit(proc.readAllStandardError());
- QCOMPARE(mocWarning, QString(SRCDIR) +
- QString("/forgotten-qinterface.h:55: Warning: Class Test implements the interface MyInterface but does not list it in Q_INTERFACES. qobject_cast to MyInterface will not work!\n"));
+ QCOMPARE(mocWarning, header +
+ QString(":55: Warning: Class Test implements the interface MyInterface but does not list it in Q_INTERFACES. qobject_cast to MyInterface will not work!\n"));
#else
QSKIP("Only tested on linux/gcc");
#endif
@@ -976,7 +992,7 @@ void tst_Moc::os9Newline()
#if !defined(SKIP_NEWLINE_TEST)
const QMetaObject &mo = Os9Newlines::staticMetaObject;
QVERIFY(mo.indexOfSlot("testSlot()") != -1);
- QFile f(srcify("os9-newlines.h"));
+ QFile f(m_sourceDirectory + QStringLiteral("/os9-newlines.h"));
QVERIFY(f.open(QIODevice::ReadOnly)); // no QIODevice::Text!
QByteArray data = f.readAll();
f.close();
@@ -990,7 +1006,7 @@ void tst_Moc::winNewline()
#if !defined(SKIP_NEWLINE_TEST)
const QMetaObject &mo = WinNewlines::staticMetaObject;
QVERIFY(mo.indexOfSlot("testSlot()") != -1);
- QFile f(srcify("win-newlines.h"));
+ QFile f(m_sourceDirectory + QStringLiteral("/win-newlines.h"));
QVERIFY(f.open(QIODevice::ReadOnly)); // no QIODevice::Text!
QByteArray data = f.readAll();
f.close();
@@ -1037,8 +1053,8 @@ void tst_Moc::frameworkSearchPath()
#endif
#if defined(Q_OS_UNIX) && !defined(QT_NO_PROCESS)
QStringList args;
- args << "-F" << srcify(".")
- << srcify("interface-from-framework.h")
+ args << "-F" << m_sourceDirectory + QStringLiteral("/.")
+ << m_sourceDirectory + QStringLiteral("/interface-from-framework.h")
;
QProcess proc;
@@ -1075,7 +1091,7 @@ void tst_Moc::templateGtGt()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.start("moc", QStringList(srcify("template-gtgt.h")));
+ proc.start("moc", QStringList(m_sourceDirectory + QStringLiteral("/template-gtgt.h")));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
@@ -1094,7 +1110,7 @@ void tst_Moc::defineMacroViaCmdline()
QStringList args;
args << "-DFOO";
- args << srcify("macro-on-cmdline.h");
+ args << m_sourceDirectory + QStringLiteral("/macro-on-cmdline.h");
proc.start("moc", args);
QVERIFY(proc.waitForFinished());
@@ -1164,25 +1180,38 @@ class PrivatePropertyTest : public QObject
Q_PRIVATE_PROPERTY(d, int bar READ bar WRITE setBar)
Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, int plop READ plop WRITE setPlop)
Q_PRIVATE_PROPERTY(PrivatePropertyTest::d_func(), int baz READ baz WRITE setBaz)
+ Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, QString blub MEMBER mBlub)
+ Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, QString blub2 MEMBER mBlub READ blub)
+ Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, QString blub3 MEMBER mBlub WRITE setBlub)
+ Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, QString blub4 MEMBER mBlub NOTIFY blub4Changed)
+ Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, QString blub5 MEMBER mBlub NOTIFY blub5Changed)
+ Q_PRIVATE_PROPERTY(PrivatePropertyTest::d, QString blub6 MEMBER mConst CONSTANT)
class MyDPointer {
public:
- MyDPointer() : mBar(0), mPlop(0) {}
+ MyDPointer() : mConst("const"), mBar(0), mPlop(0) {}
int bar() { return mBar ; }
void setBar(int value) { mBar = value; }
int plop() { return mPlop ; }
void setPlop(int value) { mPlop = value; }
int baz() { return mBaz ; }
void setBaz(int value) { mBaz = value; }
+ QString blub() const { return mBlub; }
+ void setBlub(const QString &value) { mBlub = value; }
+ QString mBlub;
+ const QString mConst;
private:
int mBar;
int mPlop;
int mBaz;
};
public:
- PrivatePropertyTest() : mFoo(0), d (new MyDPointer) {}
+ PrivatePropertyTest(QObject *parent = 0) : QObject(parent), mFoo(0), d (new MyDPointer) {}
int foo() { return mFoo ; }
void setFoo(int value) { mFoo = value; }
MyDPointer *d_func() {return d;}
+signals:
+ void blub4Changed();
+ void blub5Changed(const QString &newBlub);
private:
int mFoo;
MyDPointer *d;
@@ -1229,14 +1258,15 @@ void tst_Moc::warnOnPropertyWithoutREAD()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.start("moc", QStringList(srcify("warn-on-property-without-read.h")));
+ const QString header = m_sourceDirectory + QStringLiteral("/warn-on-property-without-read.h");
+ proc.start("moc", QStringList(header));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
QVERIFY(!mocOut.isEmpty());
QString mocWarning = QString::fromLocal8Bit(proc.readAllStandardError());
- QCOMPARE(mocWarning, QString(SRCDIR) +
- QString("/warn-on-property-without-read.h:46: Warning: Property declaration foo has no READ accessor function. The property will be invalid.\n"));
+ QCOMPARE(mocWarning, header +
+ QString(":46: Warning: Property declaration foo has no READ accessor function or associated MEMBER variable. The property will be invalid.\n"));
#else
QSKIP("Only tested on linux/gcc");
#endif
@@ -1339,14 +1369,15 @@ void tst_Moc::warnOnVirtualSignal()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.start("moc", QStringList(srcify("pure-virtual-signals.h")));
+ const QString header = m_sourceDirectory + QStringLiteral("/pure-virtual-signals.h");
+ proc.start("moc", QStringList(header));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
QVERIFY(!mocOut.isEmpty());
QString mocWarning = QString::fromLocal8Bit(proc.readAllStandardError());
- QCOMPARE(mocWarning, QString(SRCDIR) + QString("/pure-virtual-signals.h:48: Warning: Signals cannot be declared virtual\n") +
- QString(SRCDIR) + QString("/pure-virtual-signals.h:50: Warning: Signals cannot be declared virtual\n"));
+ QCOMPARE(mocWarning, header + QString(":48: Warning: Signals cannot be declared virtual\n") +
+ header + QString(":50: Warning: Signals cannot be declared virtual\n"));
#else
QSKIP("Only tested on linux/gcc");
#endif
@@ -1451,15 +1482,16 @@ void tst_Moc::notifyError()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.start("moc", QStringList(srcify("error-on-wrong-notify.h")));
+ const QString header = m_sourceDirectory + QStringLiteral("/error-on-wrong-notify.h");
+ proc.start("moc", QStringList(header));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 1);
QCOMPARE(proc.exitStatus(), QProcess::NormalExit);
QByteArray mocOut = proc.readAllStandardOutput();
QVERIFY(mocOut.isEmpty());
QString mocError = QString::fromLocal8Bit(proc.readAllStandardError());
- QCOMPARE(mocError, QString(SRCDIR) +
- QString("/error-on-wrong-notify.h:52: Error: NOTIFY signal 'fooChanged' of property 'foo' does not exist in class ClassWithWrongNOTIFY.\n"));
+ QCOMPARE(mocError, header +
+ QString(":52: Error: NOTIFY signal 'fooChanged' of property 'foo' does not exist in class ClassWithWrongNOTIFY.\n"));
#else
QSKIP("Only tested on linux/gcc");
#endif
@@ -1640,7 +1672,7 @@ void tst_Moc::warnings_data()
<< QStringList()
<< 0
<< QString("IGNORE_ALL_STDOUT")
- << QString("standard input:1: Warning: Property declaration x has no READ accessor function. The property will be invalid.");
+ << QString("standard input:1: Warning: Property declaration x has no READ accessor function or associated MEMBER variable. The property will be invalid.");
// Passing "-nn" should NOT suppress the warning
QTest::newRow("Invalid property warning with -nn")
@@ -1648,7 +1680,7 @@ void tst_Moc::warnings_data()
<< (QStringList() << "-nn")
<< 0
<< QString("IGNORE_ALL_STDOUT")
- << QString("standard input:1: Warning: Property declaration x has no READ accessor function. The property will be invalid.");
+ << QString("standard input:1: Warning: Property declaration x has no READ accessor function or associated MEMBER variable. The property will be invalid.");
// Passing "-nw" should suppress the warning
QTest::newRow("Invalid property warning with -nw")
@@ -1782,6 +1814,103 @@ void tst_Moc::returnRefs()
// they used to cause miscompilation of the moc generated file.
}
+void tst_Moc::memberProperties_data()
+{
+ QTest::addColumn<int>("object");
+ QTest::addColumn<QString>("property");
+ QTest::addColumn<QString>("signal");
+ QTest::addColumn<QString>("writeValue");
+ QTest::addColumn<bool>("expectedWriteResult");
+ QTest::addColumn<QString>("expectedReadResult");
+
+ pPPTest = new PrivatePropertyTest( this );
+
+ QTest::newRow("MEMBER property")
+ << 0 << "member1" << "" << "abc" << true << "abc";
+ QTest::newRow("MEMBER property with READ function")
+ << 0 << "member2" << "" << "def" << true << "def";
+ QTest::newRow("MEMBER property with WRITE function")
+ << 0 << "member3" << "" << "ghi" << true << "ghi";
+ QTest::newRow("MEMBER property with NOTIFY")
+ << 0 << "member4" << "member4Changed()" << "lmn" << true << "lmn";
+ QTest::newRow("MEMBER property with NOTIFY(value)")
+ << 0 << "member5" << "member5Changed(const QString&)" << "opq" << true << "opq";
+ QTest::newRow("MEMBER property with CONSTANT")
+ << 0 << "member6" << "" << "test" << false << "const";
+ QTest::newRow("private MEMBER property")
+ << 1 << "blub" << "" << "abc" << true << "abc";
+ QTest::newRow("private MEMBER property with READ function")
+ << 1 << "blub2" << "" << "def" << true << "def";
+ QTest::newRow("private MEMBER property with WRITE function")
+ << 1 << "blub3" << "" << "ghi" << true << "ghi";
+ QTest::newRow("private MEMBER property with NOTIFY")
+ << 1 << "blub4" << "blub4Changed()" << "jkl" << true << "jkl";
+ QTest::newRow("private MEMBER property with NOTIFY(value)")
+ << 1 << "blub5" << "blub5Changed(const QString&)" << "mno" << true << "mno";
+ QTest::newRow("private MEMBER property with CONSTANT")
+ << 1 << "blub6" << "" << "test" << false << "const";
+}
+
+void tst_Moc::memberProperties()
+{
+ QFETCH(int, object);
+ QFETCH(QString, property);
+ QFETCH(QString, signal);
+ QFETCH(QString, writeValue);
+ QFETCH(bool, expectedWriteResult);
+ QFETCH(QString, expectedReadResult);
+
+ QObject *pObj = (object == 0) ? this : static_cast<QObject*>(pPPTest);
+
+ QString sSignalDeclaration;
+ if (!signal.isEmpty())
+ sSignalDeclaration = QString(SIGNAL(%1)).arg(signal);
+ else
+ QTest::ignoreMessage(QtWarningMsg, "QSignalSpy: Not a valid signal, use the SIGNAL macro");
+ QSignalSpy notifySpy(pObj, sSignalDeclaration.toLatin1().constData());
+
+ int index = pObj->metaObject()->indexOfProperty(property.toLatin1().constData());
+ QVERIFY(index != -1);
+ QMetaProperty prop = pObj->metaObject()->property(index);
+
+ QCOMPARE(prop.write(pObj, writeValue), expectedWriteResult);
+
+ QVariant readValue = prop.read(pObj);
+ QCOMPARE(readValue.toString(), expectedReadResult);
+
+ if (!signal.isEmpty())
+ {
+ QCOMPARE(notifySpy.count(), 1);
+ if (prop.notifySignal().parameterNames().size() > 0) {
+ QList<QVariant> arguments = notifySpy.takeFirst();
+ QCOMPARE(arguments.size(), 1);
+ QCOMPARE(arguments.at(0).toString(), expectedReadResult);
+ }
+
+ notifySpy.clear();
+ // a second write with the same value should not cause the signal to be emitted again
+ QCOMPARE(prop.write(pObj, writeValue), expectedWriteResult);
+ QCOMPARE(notifySpy.count(), 0);
+ }
+}
+
+//this used to fail to compile
+class ClassWithOneMember : public QObject {
+ Q_PROPERTY(int member MEMBER member)
+ Q_OBJECT
+public:
+ int member;
+};
+
+void tst_Moc::memberProperties2()
+{
+ ClassWithOneMember o;
+ o.member = 442;
+ QCOMPARE(o.property("member").toInt(), 442);
+ QVERIFY(o.setProperty("member", 6666));
+ QCOMPARE(o.member, 6666);
+}
+
class SignalConnectionTester : public QObject
{
Q_OBJECT
@@ -2389,6 +2518,7 @@ struct CustomObject8 {};
struct CustomObject9 {};
struct CustomObject10 {};
struct CustomObject11 {};
+struct CustomObject12 {};
Q_DECLARE_METATYPE(CustomObject3)
Q_DECLARE_METATYPE(CustomObject4)
@@ -2399,6 +2529,7 @@ Q_DECLARE_METATYPE(CustomObject8)
Q_DECLARE_METATYPE(CustomObject9)
Q_DECLARE_METATYPE(CustomObject10)
Q_DECLARE_METATYPE(CustomObject11)
+Q_DECLARE_METATYPE(CustomObject12)
class AutoRegistrationObject : public QObject
{
@@ -2521,6 +2652,9 @@ public slots:
void ref2(QList<int>&) {}
void ref3(CustomQObject2&) {}
void ref4(QSharedPointer<CustomQObject2>&) {}
+
+signals:
+ void someSignal(CustomObject12);
};
void tst_Moc::autoPropertyMetaTypeRegistration()
@@ -2584,6 +2718,16 @@ void tst_Moc::autoMethodArgumentMetaTypeRegistration()
int i = metaObject->methodOffset(); // Start after QObject built-in slots;
+ while (i < metaObject->methodCount()) {
+ // Skip over signals so we start at the first slot.
+ const QMetaMethod method = metaObject->method(i);
+ if (method.methodType() == QMetaMethod::Signal)
+ ++i;
+ else
+ break;
+
+ }
+
#define TYPE_LOOP(TYPE) \
{ \
const QMetaMethod method = metaObject->method(i); \
@@ -2710,6 +2854,26 @@ void tst_Moc::autoMethodArgumentMetaTypeRegistration()
}
+void tst_Moc::autoSignalSpyMetaTypeRegistration()
+{
+ AutoRegistrationObject aro;
+
+ QVector<int> methodArgMetaTypeIds;
+
+ const QMetaObject *metaObject = aro.metaObject();
+
+ int i = metaObject->indexOfSignal(QMetaObject::normalizedSignature("someSignal(CustomObject12)"));
+
+ QVERIFY(i > 0);
+
+ QCOMPARE(QMetaType::type("CustomObject12"), (int)QMetaType::UnknownType);
+
+ QSignalSpy spy(&aro, SIGNAL(someSignal(CustomObject12)));
+
+ QVERIFY(QMetaType::type("CustomObject12") != QMetaType::UnknownType);
+ QCOMPARE(QMetaType::type("CustomObject12"), qMetaTypeId<CustomObject12>());
+}
+
void tst_Moc::parseDefines()
{
const QMetaObject *mo = &PD_NAMESPACE::PD_CLASSNAME::staticMetaObject;
@@ -2790,7 +2954,7 @@ void tst_Moc::preprocessorOnly()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.start("moc", QStringList() << "-E" << srcify("/pp-dollar-signs.h"));
+ proc.start("moc", QStringList() << "-E" << m_sourceDirectory + QStringLiteral("/pp-dollar-signs.h"));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 0);
QByteArray mocOut = proc.readAllStandardOutput();
@@ -2811,7 +2975,7 @@ void tst_Moc::unterminatedFunctionMacro()
#endif
#if defined(Q_OS_LINUX) && defined(Q_CC_GNU) && !defined(QT_NO_PROCESS)
QProcess proc;
- proc.start("moc", QStringList() << "-E" << srcify("/unterminated-function-macro.h"));
+ proc.start("moc", QStringList() << "-E" << m_sourceDirectory + QStringLiteral("/unterminated-function-macro.h"));
QVERIFY(proc.waitForFinished());
QCOMPARE(proc.exitCode(), 1);
QCOMPARE(proc.readAllStandardOutput(), QByteArray());
diff --git a/tests/auto/tools/qmake/tst_qmake.cpp b/tests/auto/tools/qmake/tst_qmake.cpp
index 186ecd77a4..0935b1bca4 100644
--- a/tests/auto/tools/qmake/tst_qmake.cpp
+++ b/tests/auto/tools/qmake/tst_qmake.cpp
@@ -85,8 +85,7 @@ private slots:
void one_space();
void findMocs();
void findDeps();
-#ifndef Q_OS_WIN
- // Test requires make
+#if defined(Q_OS_MAC)
void bundle_spaces();
#endif
void includefunction();
@@ -456,7 +455,7 @@ struct TempFile
}
};
-#ifndef Q_OS_WIN
+#if defined(Q_OS_MAC)
void tst_qmake::bundle_spaces()
{
QString workDir = base_path + "/testdata/bundle-spaces";
@@ -465,7 +464,7 @@ void tst_qmake::bundle_spaces()
// Bundles and since this might be the wrong output we rely on dry-running
// make (-n).
- test_compiler.setArguments("-n", "-spec macx-g++");
+ test_compiler.setArguments("-n", "-spec macx-clang");
QVERIFY( test_compiler.qmake(workDir, "bundle-spaces") );
@@ -486,7 +485,7 @@ void tst_qmake::bundle_spaces()
QVERIFY( !non_existing_file.exists() );
QVERIFY( test_compiler.removeMakefile(workDir) );
}
-#endif // Q_OS_WIN
+#endif // defined(Q_OS_MAC)
void tst_qmake::includefunction()
{
diff --git a/tests/auto/widgets/dialogs/dialogs.pro b/tests/auto/widgets/dialogs/dialogs.pro
index 034f37c6e0..e767c9767e 100644
--- a/tests/auto/widgets/dialogs/dialogs.pro
+++ b/tests/auto/widgets/dialogs/dialogs.pro
@@ -20,3 +20,4 @@ wince*:SUBDIRS -= qabstractprintdialog
qsidebar \
mac:qinputdialog.CONFIG += no_check_target # QTBUG-25496
+win32-g++*: SUBDIRS -= qfilesystemmodel # QTBUG-29403
diff --git a/tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp b/tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp
index 9654f3ac5e..e091267889 100644
--- a/tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp
+++ b/tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp
@@ -61,7 +61,7 @@ void tst_QErrorMessage::dontShowAgain()
QErrorMessage errorMessageDialog(0);
- // show an error with plain string
+ // show an error with plain string
errorMessageDialog.showMessage(plainString);
QVERIFY(errorMessageDialog.isVisible());
checkBox = qFindChild<QCheckBox*>(&errorMessageDialog);
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro b/tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro
index 5606033240..78639e87a5 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/qfilesystemmodel.pro
@@ -1,6 +1,6 @@
CONFIG += testcase
-CONFIG += parallel_test
-win32:testcase.timeout = 900 # this testcase can be slow on Windows
+# This testcase can be slow on Windows and may interfere with other file system tests.
+win32:testcase.timeout = 900
QT += widgets widgets-private
QT += core-private gui testlib
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index db80aa1b22..e36eaa5af2 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -48,6 +48,7 @@
#include <QFileIconProvider>
#include <QTreeView>
#include <QHeaderView>
+#include <QStandardPaths>
#include <QTime>
#include <QStyle>
#include <QtGlobal>
@@ -109,6 +110,7 @@ private slots:
void setData_data();
void setData();
+ void sortPersistentIndex();
void sort_data();
void sort();
@@ -207,27 +209,30 @@ void tst_QFileSystemModel::rootPath()
QCOMPARE(rootChanged.count(), 0);
QString oldRootPath = model->rootPath();
- root = model->setRootPath(QDir::homePath());
+ const QStringList documentPaths = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);
+ QVERIFY(!documentPaths.isEmpty());
+ const QString documentPath = documentPaths.front();
+ root = model->setRootPath(documentPath);
QTRY_VERIFY(model->rowCount(root) >= 0);
- QCOMPARE(model->rootPath(), QString(QDir::homePath()));
+ QCOMPARE(model->rootPath(), QString(documentPath));
QCOMPARE(rootChanged.count(), oldRootPath == model->rootPath() ? 0 : 1);
- QCOMPARE(model->rootDirectory().absolutePath(), QDir::homePath());
+ QCOMPARE(model->rootDirectory().absolutePath(), documentPath);
model->setRootPath(QDir::rootPath());
int oldCount = rootChanged.count();
oldRootPath = model->rootPath();
- root = model->setRootPath(QDir::homePath() + QLatin1String("/."));
+ root = model->setRootPath(documentPath + QLatin1String("/."));
QTRY_VERIFY(model->rowCount(root) >= 0);
- QCOMPARE(model->rootPath(), QDir::homePath());
+ QCOMPARE(model->rootPath(), documentPath);
QCOMPARE(rootChanged.count(), oldRootPath == model->rootPath() ? oldCount : oldCount + 1);
- QCOMPARE(model->rootDirectory().absolutePath(), QDir::homePath());
+ QCOMPARE(model->rootDirectory().absolutePath(), documentPath);
- QDir newdir = QDir::home();
+ QDir newdir = documentPath;
if (newdir.cdUp()) {
oldCount = rootChanged.count();
oldRootPath = model->rootPath();
- root = model->setRootPath(QDir::homePath() + QLatin1String("/.."));
+ root = model->setRootPath(documentPath + QLatin1String("/.."));
QTRY_VERIFY(model->rowCount(root) >= 0);
QCOMPARE(model->rootPath(), newdir.path());
QCOMPARE(rootChanged.count(), oldCount + 1);
@@ -310,9 +315,9 @@ void tst_QFileSystemModel::naturalCompare()
void tst_QFileSystemModel::readOnly()
{
QCOMPARE(model->isReadOnly(), true);
- QTemporaryFile file;
+ QTemporaryFile file(flatDirTestPath + QStringLiteral("/XXXXXX.dat"));
file.open();
- QModelIndex root = model->setRootPath(QDir::tempPath());
+ QModelIndex root = model->setRootPath(flatDirTestPath);
QTRY_VERIFY(model->rowCount(root) > 0);
QVERIFY(!(model->flags(model->index(file.fileName())) & Qt::ItemIsEditable));
@@ -358,7 +363,10 @@ void tst_QFileSystemModel::iconProvider()
delete p;
QFileSystemModel *myModel = new QFileSystemModel();
- myModel->setRootPath(QDir::homePath());
+ const QStringList documentPaths = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);
+ QVERIFY(!documentPaths.isEmpty());
+ const QString documentPath = documentPaths.front();
+ myModel->setRootPath(documentPath);
//Let's wait to populate the model
QTest::qWait(250);
//We change the provider, icons must me updated
@@ -791,6 +799,19 @@ void tst_QFileSystemModel::setData()
QTRY_COMPARE(model->rowCount(root), files.count());
}
+void tst_QFileSystemModel::sortPersistentIndex()
+{
+ QTemporaryFile file(flatDirTestPath + QStringLiteral("/XXXXXX.dat"));
+ file.open();
+ QModelIndex root = model->setRootPath(flatDirTestPath);
+ QTRY_VERIFY(model->rowCount(root) > 0);
+
+ QPersistentModelIndex idx = model->index(0, 1, root);
+ model->sort(0, Qt::AscendingOrder);
+ model->sort(0, Qt::DescendingOrder);
+ QVERIFY(idx.column() != 0);
+}
+
class MyFriendFileSystemModel : public QFileSystemModel
{
friend class tst_QFileSystemModel;
@@ -806,18 +827,6 @@ void tst_QFileSystemModel::sort_data()
void tst_QFileSystemModel::sort()
{
- QTemporaryFile file;
- file.open();
- QModelIndex root = model->setRootPath(QDir::tempPath());
- QTRY_VERIFY(model->rowCount(root) > 0);
-
- QPersistentModelIndex idx = model->index(0, 1, root);
- model->sort(0, Qt::AscendingOrder);
- model->sort(0, Qt::DescendingOrder);
- QVERIFY(idx.column() != 0);
-
- model->setRootPath(QDir::homePath());
-
QFETCH(bool, fileDialogMode);
MyFriendFileSystemModel *myModel = new MyFriendFileSystemModel();
diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
index 3922cce5cc..ae5853f3c8 100644
--- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
+++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
@@ -611,7 +611,7 @@ void tst_QWizard::addPage()
arguments = spy.takeFirst();
QCOMPARE(arguments.at(0).toInt(), N + 52);
- QTest::ignoreMessage(QtWarningMsg,"QWizard::setPage: Cannot insert null page");
+ QTest::ignoreMessage(QtWarningMsg,"QWizard::setPage: Cannot insert null page");
wizard.addPage(0); // generates a warning
QCOMPARE(spy.count(), 0);
delete parent;
@@ -638,7 +638,7 @@ void tst_QWizard::setPage()
QCOMPARE(wizard.nextId(), -1);
page = new QWizardPage(parent);
- QTest::ignoreMessage(QtWarningMsg,"QWizard::setPage: Cannot insert page with ID -1");
+ QTest::ignoreMessage(QtWarningMsg,"QWizard::setPage: Cannot insert page with ID -1");
wizard.setPage(-1, page); // gives a warning and does nothing
QCOMPARE(spy.count(), 0);
QVERIFY(!wizard.page(-2));
@@ -2453,7 +2453,7 @@ private:
QLayout *layout_ = new QVBoxLayout(this);
layout_->addWidget(treeWidget = new QTreeWidget);
-
+
QSizePolicy policy = sizePolicy();
policy.setVerticalPolicy(verticalPolicy);
treeWidget->setSizePolicy(policy);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
index fb55cf3d8f..41e5ed466c 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
@@ -1549,7 +1549,7 @@ void tst_QGraphicsGridLayout::setColumnSpacing()
}
void tst_QGraphicsGridLayout::setGeometry_data()
-{
+{
QTest::addColumn<QRectF>("rect");
QTest::newRow("null") << QRectF();
QTest::newRow("normal") << QRectF(0,0, 50, 50);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index b14e68951b..56cf27155d 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -424,6 +424,7 @@ private slots:
void activate();
void setActivePanelOnInactiveScene();
void activationOnShowHide();
+ void deactivateInactivePanel();
void moveWhileDeleting();
void ensureDirtySceneTransform();
void focusScope();
@@ -2204,7 +2205,6 @@ void tst_QGraphicsItem::sceneMatrix()
void tst_QGraphicsItem::setMatrix()
{
QGraphicsScene scene;
- qRegisterMetaType<QList<QRectF> >("QList<QRectF>");
QSignalSpy spy(&scene, SIGNAL(changed(QList<QRectF>)));
QRectF unrotatedRect(-12, -34, 56, 78);
QGraphicsRectItem item(unrotatedRect, 0);
@@ -9030,6 +9030,40 @@ public:
}
};
+void tst_QGraphicsItem::deactivateInactivePanel()
+{
+ QGraphicsScene scene;
+ QGraphicsItem *panel1 = scene.addRect(QRectF(0, 0, 10, 10));
+ panel1->setFlag(QGraphicsItem::ItemIsPanel);
+
+ QGraphicsItem *panel2 = scene.addRect(QRectF(0, 0, 10, 10));
+ panel2->setFlag(QGraphicsItem::ItemIsPanel);
+
+ QEvent event(QEvent::WindowActivate);
+ qApp->sendEvent(&scene, &event);
+
+ panel1->setActive(true);
+ QVERIFY(scene.isActive());
+ QVERIFY(panel1->isActive());
+ QVERIFY(!panel2->isActive());
+ QCOMPARE(scene.activePanel(), panel1);
+
+ panel2->setActive(true);
+ QVERIFY(panel2->isActive());
+ QVERIFY(!panel1->isActive());
+ QCOMPARE(scene.activePanel(), panel2);
+
+ panel2->setActive(false);
+ QVERIFY(panel1->isActive());
+ QVERIFY(!panel2->isActive());
+ QCOMPARE(scene.activePanel(), panel1);
+
+ panel2->setActive(false);
+ QVERIFY(panel1->isActive());
+ QVERIFY(!panel2->isActive());
+ QCOMPARE(scene.activePanel(), panel1);
+}
+
void tst_QGraphicsItem::moveWhileDeleting()
{
QGraphicsScene scene;
@@ -10333,23 +10367,24 @@ void tst_QGraphicsItem::modality_clickFocus()
EventSpy2 rect1Spy(&scene, rect1);
EventSpy2 rect2Spy(&scene, rect2);
- // activate rect1, it should not get focus
+ // activate rect1, it should get focus
rect1->setActive(true);
- QCOMPARE(scene.focusItem(), (QGraphicsItem *) 0);
+ QCOMPARE(scene.focusItem(), (QGraphicsItem *) rect1);
- // focus stays unset when rect2 becomes modal
+ // focus stays when rect2 becomes modal
rect2->setPanelModality(QGraphicsItem::SceneModal);
- QCOMPARE(scene.focusItem(), (QGraphicsItem *) 0);
- QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 0);
+ QCOMPARE(scene.focusItem(), (QGraphicsItem *) rect1);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 1);
QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 0);
QCOMPARE(rect2Spy.counts[QEvent::FocusIn], 0);
QCOMPARE(rect2Spy.counts[QEvent::FocusOut], 0);
// clicking on rect1 should not set it's focus item
+ rect1->clearFocus();
sendMouseClick(&scene, QPointF(-25, -25));
QCOMPARE(rect1->focusItem(), (QGraphicsItem *) 0);
- QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 0);
- QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 0);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 1);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 1);
QCOMPARE(rect2Spy.counts[QEvent::FocusIn], 0);
QCOMPARE(rect2Spy.counts[QEvent::FocusOut], 0);
@@ -10357,33 +10392,34 @@ void tst_QGraphicsItem::modality_clickFocus()
rect2->setActive(true);
sendMouseClick(&scene, QPointF(75, 75));
QCOMPARE(scene.focusItem(), (QGraphicsItem *) rect2);
- QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 0);
- QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 0);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 1);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 1);
QCOMPARE(rect2Spy.counts[QEvent::FocusIn], 1);
QCOMPARE(rect2Spy.counts[QEvent::FocusOut], 0);
// clicking on rect1 does *not* give it focus
rect1->setActive(true);
+ rect1->clearFocus();
sendMouseClick(&scene, QPointF(-25, -25));
QCOMPARE(scene.focusItem(), (QGraphicsItem *) 0);
- QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 0);
- QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 0);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 2);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 2);
QCOMPARE(rect2Spy.counts[QEvent::FocusIn], 1);
QCOMPARE(rect2Spy.counts[QEvent::FocusOut], 1);
// focus doesn't change when leaving modality either
rect2->setPanelModality(QGraphicsItem::NonModal);
QCOMPARE(scene.focusItem(), (QGraphicsItem *) 0);
- QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 0);
- QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 0);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 2);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 2);
QCOMPARE(rect2Spy.counts[QEvent::FocusIn], 1);
QCOMPARE(rect2Spy.counts[QEvent::FocusOut], 1);
// click on rect1, it should get focus now
sendMouseClick(&scene, QPointF(-25, -25));
QCOMPARE(scene.focusItem(), (QGraphicsItem *) rect1);
- QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 1);
- QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 0);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusIn], 3);
+ QCOMPARE(rect1Spy.counts[QEvent::FocusOut], 2);
QCOMPARE(rect2Spy.counts[QEvent::FocusIn], 1);
QCOMPARE(rect2Spy.counts[QEvent::FocusOut], 1);
}
diff --git a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
index 7a5f7319bc..fe1df6c8f0 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -240,7 +240,7 @@ private slots:
void update();
void update2();
void views();
- void event();
+ void testEvent();
void eventsToDisabledItems();
void exposedRect();
void tabFocus_emptyScene();
@@ -266,6 +266,7 @@ private slots:
void siblingIndexAlwaysValid();
void removeFullyTransparentItem();
void zeroScale();
+ void focusItemChangedSignal();
// task specific tests below me
void task139710_bspTreeCrash();
@@ -2910,7 +2911,7 @@ protected:
}
};
-void tst_QGraphicsScene::event()
+void tst_QGraphicsScene::testEvent()
{
// Test that QGraphicsScene properly propagates events to QObject.
CustomScene scene;
@@ -3883,11 +3884,11 @@ void tst_QGraphicsScene::initialFocus_data()
QTest::addColumn<bool>("shouldHaveFocus");
QTest::newRow("inactive scene, normal item") << false << false << false << false;
- QTest::newRow("inactive scene, panel item") << false << false << true << false;
+ QTest::newRow("inactive scene, panel item") << false << false << true << true;
QTest::newRow("inactive scene, normal item, explicit focus") << false << true << false << true;
QTest::newRow("inactive scene, panel, explicit focus") << false << true << true << true;
QTest::newRow("active scene, normal item") << true << false << false << false;
- QTest::newRow("active scene, panel item") << true << false << true << false;
+ QTest::newRow("active scene, panel item") << true << false << true << true;
QTest::newRow("active scene, normal item, explicit focus") << true << true << false << true;
QTest::newRow("active scene, panel, explicit focus") << true << true << true << true;
}
@@ -4561,6 +4562,119 @@ void tst_QGraphicsScene::zeroScale()
QTRY_COMPARE(cl.changes.count(), 2);
}
+void tst_QGraphicsScene::focusItemChangedSignal()
+{
+ qRegisterMetaType<QGraphicsItem *>("QGraphicsItem *");
+ qRegisterMetaType<Qt::FocusReason>("Qt::FocusReason");
+
+ QGraphicsScene scene;
+ QSignalSpy spy(&scene, SIGNAL(focusItemChanged(QGraphicsItem *, QGraphicsItem *, Qt::FocusReason)));
+ QVERIFY(spy.isValid());
+ QCOMPARE(spy.count(), 0);
+ scene.setFocus();
+ QCOMPARE(spy.count(), 0);
+ QEvent activateEvent(QEvent::WindowActivate);
+ qApp->sendEvent(&scene, &activateEvent);
+ QCOMPARE(spy.count(), 0);
+
+ QGraphicsRectItem *topLevelItem1 = new QGraphicsRectItem;
+ topLevelItem1->setFlag(QGraphicsItem::ItemIsFocusable);
+ scene.addItem(topLevelItem1);
+ QCOMPARE(spy.count(), 0);
+ QVERIFY(!topLevelItem1->hasFocus());
+
+ QGraphicsRectItem *topLevelItem2 = new QGraphicsRectItem;
+ topLevelItem2->setFlag(QGraphicsItem::ItemIsFocusable);
+ topLevelItem2->setFocus();
+ QVERIFY(!topLevelItem2->hasFocus());
+ scene.addItem(topLevelItem2);
+ QCOMPARE(spy.count(), 1);
+ QList<QVariant> arguments = spy.takeFirst();
+ QCOMPARE(arguments.size(), 3);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)0);
+ QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::OtherFocusReason);
+ QVERIFY(topLevelItem2->hasFocus());
+
+ scene.clearFocus();
+ QCOMPARE(spy.count(), 1);
+ arguments = spy.takeFirst();
+ QCOMPARE(arguments.size(), 3);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)0);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2);
+ QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::OtherFocusReason);
+
+ scene.setFocus(Qt::MenuBarFocusReason);
+ QCOMPARE(spy.count(), 1);
+ arguments = spy.takeFirst();
+ QCOMPARE(arguments.size(), 3);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)0);
+ QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::MenuBarFocusReason);
+
+ for (int i = 0; i < 3; ++i) {
+ topLevelItem1->setFocus(Qt::TabFocusReason);
+ arguments = spy.takeFirst();
+ QCOMPARE(arguments.size(), 3);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem1);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2);
+ QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::TabFocusReason);
+
+ topLevelItem2->setFocus(Qt::TabFocusReason);
+ arguments = spy.takeFirst();
+ QCOMPARE(arguments.size(), 3);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)topLevelItem2);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem1);
+ QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::TabFocusReason);
+ }
+
+ // The following two are unexpected, but fixing this (i.e., losing and gaining focus
+ // when the scene activation changes) breaks quite a few tests so leave this fix
+ // for some future release. See QTBUG-28346.
+ QEvent deactivateEvent(QEvent::WindowDeactivate);
+ qApp->sendEvent(&scene, &deactivateEvent);
+ QEXPECT_FAIL("", "QTBUG-28346", Continue);
+ QCOMPARE(spy.count(), 1);
+ qApp->sendEvent(&scene, &activateEvent);
+ QEXPECT_FAIL("", "QTBUG-28346", Continue);
+ QCOMPARE(spy.count(), 1);
+
+ QGraphicsRectItem *panel1 = new QGraphicsRectItem;
+ panel1->setFlags(QGraphicsItem::ItemIsPanel | QGraphicsItem::ItemIsFocusable);
+ panel1->setFocus();
+ scene.addItem(panel1);
+ QCOMPARE(spy.count(), 1);
+ arguments = spy.takeFirst();
+ QCOMPARE(arguments.size(), 3);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel1);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)topLevelItem2);
+ QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason);
+
+ QGraphicsRectItem *panel2 = new QGraphicsRectItem;
+ panel2->setFlags(QGraphicsItem::ItemIsPanel | QGraphicsItem::ItemIsFocusable);
+ scene.addItem(panel2);
+ QCOMPARE(spy.count(), 0);
+
+ for (int i = 0; i < 3; ++i) {
+ scene.setActivePanel(panel2);
+ QCOMPARE(spy.count(), 1);
+ arguments = spy.takeFirst();
+ QCOMPARE(arguments.size(), 3);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel2);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)panel1);
+ QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason);
+
+ scene.setActivePanel(panel1);
+ QCOMPARE(spy.count(), 1);
+ arguments = spy.takeFirst();
+ QCOMPARE(arguments.size(), 3);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(0)), (QGraphicsItem *)panel1);
+ QCOMPARE(qVariantValue<QGraphicsItem *>(arguments.at(1)), (QGraphicsItem *)panel2);
+ QCOMPARE(qVariantValue<Qt::FocusReason>(arguments.at(2)), Qt::ActiveWindowFocusReason);
+ }
+
+}
+
void tst_QGraphicsScene::taskQTBUG_15977_renderWithDeviceCoordinateCache()
{
QGraphicsScene scene;
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index 69665572f7..4cfdfccd63 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -172,12 +172,12 @@ private slots:
void initialShow2();
void itemChangeEvents();
void itemSendGeometryPosChangesDeactivated();
-
void fontPropagatesResolveToChildren();
void fontPropagatesResolveToGrandChildren();
void fontPropagatesResolveInParentChange();
void fontPropagatesResolveViaNonWidget();
void fontPropagatesResolveFromScene();
+ void tabFocus();
// Task fixes
void task236127_bspTreeIndexFails();
@@ -3302,6 +3302,103 @@ void tst_QGraphicsWidget::itemSendGeometryPosChangesDeactivated()
QCOMPARE(item->geometry(), QRectF(10, 10, 60, 60));
}
+class TabFocusWidget : public QGraphicsWidget
+{
+ Q_OBJECT
+public:
+ TabFocusWidget(const QString &name, QGraphicsItem *parent = 0)
+ : QGraphicsWidget(parent)
+ { setFocusPolicy(Qt::TabFocus); setData(0, name); }
+};
+
+void verifyTabFocus(QGraphicsScene *scene, const QList<QGraphicsWidget *> &chain, bool wrapsAround)
+{
+ QKeyEvent tabEvent(QEvent::KeyPress, Qt::Key_Tab, 0);
+ QKeyEvent backtabEvent(QEvent::KeyPress, Qt::Key_Backtab, 0);
+
+ for (int i = 0; i < chain.size(); ++i)
+ chain.at(i)->clearFocus();
+
+ int n = chain.size() * (wrapsAround ? 3 : 1);
+ for (int i = 0; i < n; ++i)
+ {
+ qApp->sendEvent(scene, &tabEvent);
+ QVERIFY(chain.at(i % chain.size())->hasFocus());
+ QCOMPARE(scene->focusItem(), chain.at(i % chain.size()));
+ }
+ for (int i = n - 2; i >= 0; --i)
+ {
+ qApp->sendEvent(scene, &backtabEvent);
+ QVERIFY(chain.at(i % chain.size())->hasFocus());
+ QCOMPARE(scene->focusItem(), chain.at(i % chain.size()));
+ }
+}
+
+void tst_QGraphicsWidget::tabFocus()
+{
+ QGraphicsScene scene;
+ scene.setFocus();
+
+ QEvent activate(QEvent::WindowActivate);
+ qApp->sendEvent(&scene, &activate);
+
+ TabFocusWidget *widget = new TabFocusWidget("1");
+ scene.addItem(widget);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget, false);
+
+ TabFocusWidget *widget2 = new TabFocusWidget("2");
+ scene.addItem(widget2);
+ scene.setFocusItem(0);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget << widget2, false);
+
+ TabFocusWidget *widget3 = new TabFocusWidget("3");
+ widget3->setFlag(QGraphicsItem::ItemIsPanel);
+ scene.addItem(widget3);
+ QCOMPARE(scene.activePanel(), (QGraphicsItem *)widget3);
+ scene.setActivePanel(0);
+ scene.setFocusItem(0);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget << widget2, false);
+
+ scene.setActivePanel(widget3);
+ QCOMPARE(scene.focusItem(), (QGraphicsItem *)widget3);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3, true);
+
+ TabFocusWidget *widget4 = new TabFocusWidget("4");
+ widget4->setParentItem(widget3);
+ QVERIFY(widget3->hasFocus());
+ widget3->clearFocus();
+ QVERIFY(!widget3->focusItem());
+ QCOMPARE(scene.activePanel(), (QGraphicsItem *)widget3);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4, true);
+
+ QGraphicsWidget *widget5 = new QGraphicsWidget; widget5->setData(0, QLatin1String("5"));
+ widget5->setParentItem(widget3);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4, true);
+
+ widget5->setFocusPolicy(Qt::TabFocus);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4 << widget5, true);
+
+ TabFocusWidget *widget6 = new TabFocusWidget("6");
+ widget6->setParentItem(widget4);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4 << widget6 << widget5, true);
+
+ TabFocusWidget *widget7 = new TabFocusWidget("7", widget6);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4 << widget6 << widget7 << widget5, true);
+
+ TabFocusWidget *widget8 = new TabFocusWidget("8", widget6);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4 << widget6 << widget7 << widget8 << widget5, true);
+ widget6->setFlag(QGraphicsItem::ItemIsPanel);
+ widget6->setActive(true);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget6 << widget7 << widget8, true);
+ widget3->setActive(true);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4 << widget5, true);
+ widget6->setFlag(QGraphicsItem::ItemIsPanel, false);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4 << widget6 << widget7 << widget8 << widget5, true);
+ scene.removeItem(widget6);
+ verifyTabFocus(&scene, QList<QGraphicsWidget *>() << widget3 << widget4 << widget5, true);
+ delete widget6;
+}
+
void tst_QGraphicsWidget::QT_BUG_6544_tabFocusFirstUnsetWhenRemovingItems()
{
QGraphicsScene scene;
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
index 2d95c9d3a4..f0731eb3a6 100644
--- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
+++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
@@ -235,6 +235,8 @@ private slots:
void testDelegateDestroyEditor();
void testClickedSignal();
void testChangeEditorState();
+ void deselectInSingleSelection();
+ void testNoActivateOnDisabledItem();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
@@ -1599,5 +1601,70 @@ void tst_QAbstractItemView::testChangeEditorState()
// No segfault - the test passes.
}
+void tst_QAbstractItemView::deselectInSingleSelection()
+{
+ QTableView view;
+ QStandardItemModel s;
+ s.setRowCount(10);
+ s.setColumnCount(10);
+ view.setModel(&s);
+ view.show();
+ view.setSelectionMode(QAbstractItemView::SingleSelection);
+ view.setEditTriggers(QAbstractItemView::NoEditTriggers);
+ QApplication::setActiveWindow(&view);
+ QVERIFY(QTest::qWaitForWindowExposed(&view));
+ // mouse
+ QModelIndex index22 = s.index(2, 2);
+ QRect rect22 = view.visualRect(index22);
+ QPoint clickpos = rect22.center();
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, clickpos);
+ QCOMPARE(view.currentIndex(), index22);
+ QCOMPARE(view.selectionModel()->selectedIndexes().count(), 1);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::ControlModifier, clickpos);
+ QCOMPARE(view.currentIndex(), index22);
+ QCOMPARE(view.selectionModel()->selectedIndexes().count(), 0);
+
+ // second click with modifier however does select
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::ControlModifier, clickpos);
+ QCOMPARE(view.currentIndex(), index22);
+ QCOMPARE(view.selectionModel()->selectedIndexes().count(), 1);
+
+ // keyboard
+ QTest::keyClick(&view, Qt::Key_Space, Qt::NoModifier);
+ QCOMPARE(view.currentIndex(), index22);
+ QCOMPARE(view.selectionModel()->selectedIndexes().count(), 1);
+ QTest::keyClick(&view, Qt::Key_Space, Qt::ControlModifier);
+ QCOMPARE(view.currentIndex(), index22);
+ QCOMPARE(view.selectionModel()->selectedIndexes().count(), 0);
+
+ // second keypress with modifier however does select
+ QTest::keyClick(&view, Qt::Key_Space, Qt::ControlModifier);
+ QCOMPARE(view.currentIndex(), index22);
+ QCOMPARE(view.selectionModel()->selectedIndexes().count(), 1);
+}
+
+void tst_QAbstractItemView::testNoActivateOnDisabledItem()
+{
+ QTreeView treeView;
+ QStandardItemModel model(1, 1);
+ QStandardItem *item = new QStandardItem("item");
+ model.setItem(0, 0, item);
+ item->setFlags(Qt::NoItemFlags);
+ treeView.setModel(&model);
+ treeView.show();
+
+ QApplication::setActiveWindow(&treeView);
+ QVERIFY(QTest::qWaitForWindowActive(&treeView));
+
+ QSignalSpy activatedSpy(&treeView, SIGNAL(activated(QModelIndex)));
+
+ // Ensure clicking on a disabled item doesn't emit itemActivated.
+ QModelIndex itemIndex = treeView.model()->index(0, 0);
+ QPoint clickPos = treeView.visualRect(itemIndex).center();
+ QTest::mouseClick(treeView.viewport(), Qt::LeftButton, 0, clickPos);
+
+ QCOMPARE(activatedSpy.count(), 0);
+}
+
QTEST_MAIN(tst_QAbstractItemView)
#include "tst_qabstractitemview.moc"
diff --git a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp
index 81736ad0d0..3fa3fbe0ee 100644
--- a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp
+++ b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp
@@ -165,7 +165,8 @@ public:
QColumnView::setSelection(rect, command);
}
- QRegion visualRegionForSelection(QItemSelection selection){
+ // visualRegionForSelection() is protected in QColumnView.
+ QRegion getVisualRegionForSelection(const QItemSelection &selection){
return QColumnView::visualRegionForSelection(selection);
}
protected:
@@ -664,7 +665,7 @@ void tst_QColumnView::visualRegionForSelection()
{
ColumnView view;
QItemSelection emptyItemSelection;
- QCOMPARE(QRegion(), view.visualRegionForSelection(emptyItemSelection));
+ QCOMPARE(QRegion(), view.getVisualRegionForSelection(emptyItemSelection));
// a region that isn't empty
QDirModel model;
@@ -680,7 +681,7 @@ void tst_QColumnView::visualRegionForSelection()
QModelIndex home = model.index(location);
QVERIFY(model.rowCount(home) > 1);
QItemSelection itemSelection(model.index(0, 0, home), model.index(model.rowCount(home) - 1, 0, home));
- QVERIFY(QRegion() != view.visualRegionForSelection(itemSelection));
+ QVERIFY(QRegion() != view.getVisualRegionForSelection(itemSelection));
}
void tst_QColumnView::moveGrip_basic()
diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
index 63d5389e12..fa67e16db9 100644
--- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
+++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
@@ -157,7 +157,7 @@ private slots:
void sortIndicatorTracking();
void removeAndInsertRow();
void unhideSection();
- void event();
+ void testEvent();
void headerDataChanged();
void currentChanged();
void horizontalOffset();
@@ -1368,7 +1368,7 @@ void tst_QHeaderView::unhideSection()
}
-void tst_QHeaderView::event()
+void tst_QHeaderView::testEvent()
{
protected_QHeaderView x(Qt::Vertical);
x.testEvent();
diff --git a/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp b/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp
index 0224f9019a..22a1743ff1 100644
--- a/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp
+++ b/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp
@@ -220,7 +220,7 @@ private slots:
void doLayout();
void rect_data();
void rect();
- void eventFilter();
+ void testEventFilter();
void dateTimeEditor_data();
void dateTimeEditor();
void dateAndTimeEditorTest2();
@@ -695,7 +695,7 @@ void tst_QItemDelegate::rect()
//TODO : Add a test for the keyPress event
//with Qt::Key_Enter and Qt::Key_Return
-void tst_QItemDelegate::eventFilter()
+void tst_QItemDelegate::testEventFilter()
{
TestItemDelegate delegate;
QWidget widget;
diff --git a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp
index 02d5c5cdb7..113ec1fd30 100644
--- a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp
+++ b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp
@@ -505,11 +505,12 @@ class QMoveCursorListView : public QListView
public:
QMoveCursorListView() : QListView() {}
+ // enum CursorAction and moveCursor() are protected in QListView.
enum CursorAction { MoveUp, MoveDown, MoveLeft, MoveRight,
MoveHome, MoveEnd, MovePageUp, MovePageDown,
MoveNext, MovePrevious };
- QModelIndex moveCursor(QMoveCursorListView::CursorAction action, Qt::KeyboardModifiers modifiers)
+ QModelIndex doMoveCursor(QMoveCursorListView::CursorAction action, Qt::KeyboardModifiers modifiers)
{
return QListView::moveCursor((QListView::CursorAction)action, modifiers);
}
@@ -540,9 +541,9 @@ void tst_QListView::moveCursor2()
vu.selectionModel()->setCurrentIndex(model.index(0,0), QItemSelectionModel::SelectCurrent);
QCoreApplication::processEvents();
- QModelIndex idx = vu.moveCursor(QMoveCursorListView::MoveHome, Qt::NoModifier);
+ QModelIndex idx = vu.doMoveCursor(QMoveCursorListView::MoveHome, Qt::NoModifier);
QCOMPARE(idx, model.index(0,0));
- idx = vu.moveCursor(QMoveCursorListView::MoveDown, Qt::NoModifier);
+ idx = vu.doMoveCursor(QMoveCursorListView::MoveDown, Qt::NoModifier);
QCOMPARE(idx, model.index(8,0));
}
@@ -1628,7 +1629,7 @@ void tst_QListView::task196118_visualRegionForSelection()
class MyListView : public QListView
{
public:
- QRegion visualRegionForSelection() const
+ QRegion getVisualRegionForSelection() const
{ return QListView::visualRegionForSelection( selectionModel()->selection()); }
} view;
@@ -1643,7 +1644,7 @@ void tst_QListView::task196118_visualRegionForSelection()
view.selectionModel()->select(top1.index(), QItemSelectionModel::Select);
QCOMPARE(view.selectionModel()->selectedIndexes().count(), 1);
- QVERIFY(view.visualRegionForSelection().isEmpty());
+ QVERIFY(view.getVisualRegionForSelection().isEmpty());
}
void tst_QListView::task254449_draggingItemToNegativeCoordinates()
@@ -1977,11 +1978,11 @@ void tst_QListView::taskQTBUG_5877_skippingItemInPageDownUp()
vu.selectionModel()->setCurrentIndex(model.index(currentItemIndexes[i], 0),
QItemSelectionModel::SelectCurrent);
- QModelIndex idx = vu.moveCursor(QMoveCursorListView::MovePageDown, Qt::NoModifier);
+ QModelIndex idx = vu.doMoveCursor(QMoveCursorListView::MovePageDown, Qt::NoModifier);
int newCurrent = qMin(currentItemIndexes[i] + scrolledRowCount, 99);
QCOMPARE(idx, model.index(newCurrent, 0));
- idx = vu.moveCursor(QMoveCursorListView::MovePageUp, Qt::NoModifier);
+ idx = vu.doMoveCursor(QMoveCursorListView::MovePageUp, Qt::NoModifier);
newCurrent = qMax(currentItemIndexes[i] - scrolledRowCount, 0);
QCOMPARE(idx, model.index(newCurrent, 0));
}
diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
index 8a679fd1a0..d1107a687c 100644
--- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
+++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
@@ -437,6 +437,7 @@ public:
this, SLOT(itemSelectionChanged(QItemSelection,QItemSelection)));
}
+ // enum CursorAction and moveCursor() are protected in QTableView.
enum CursorAction {
MoveUp = QAbstractItemView::MoveUp,
MoveDown = QAbstractItemView::MoveDown,
@@ -450,7 +451,7 @@ public:
MovePrevious = QAbstractItemView::MovePrevious
};
- QModelIndex moveCursor(QtTestTableView::CursorAction cursorAction,
+ QModelIndex doMoveCursor(QtTestTableView::CursorAction cursorAction,
Qt::KeyboardModifiers modifiers)
{
return QTableView::moveCursor((QAbstractItemView::CursorAction)cursorAction, modifiers);
@@ -1192,7 +1193,7 @@ void tst_QTableView::moveCursor()
QModelIndex index = model.index(startRow, startColumn);
view.setCurrentIndex(index);
- QModelIndex newIndex = view.moveCursor((QtTestTableView::CursorAction)cursorMoveAction,
+ QModelIndex newIndex = view.doMoveCursor((QtTestTableView::CursorAction)cursorMoveAction,
(Qt::KeyboardModifiers)modifier);
// expected fails, task 119433
if(newIndex.row() == -1)
@@ -1339,7 +1340,7 @@ void tst_QTableView::moveCursorStrikesBack()
int newRow = -1;
int newColumn = -1;
foreach (int cursorMoveAction, cursorMoveActions) {
- QModelIndex newIndex = view.moveCursor((QtTestTableView::CursorAction)cursorMoveAction, 0);
+ QModelIndex newIndex = view.doMoveCursor((QtTestTableView::CursorAction)cursorMoveAction, 0);
view.setCurrentIndex(newIndex);
newRow = newIndex.row();
newColumn = newIndex.column();
diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
index e64dce1a11..f72467de08 100644
--- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
@@ -1444,7 +1444,7 @@ void tst_QTableWidget::task231094()
tw.setCurrentCell(1, 1);
QCOMPARE(tw.currentRow(), 1);
QCOMPARE(tw.currentColumn(), 1);
-
+
//this would provoke a end-less loop
QTest::keyClick(&tw, '1');
diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
index 0f69e951bf..ea1f846258 100644
--- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
@@ -89,7 +89,8 @@ struct PublicView : public QTreeView
MovePrevious = QAbstractItemView::MovePrevious
};
- inline QModelIndex moveCursor(PublicCursorAction ca, Qt::KeyboardModifiers kbm)
+ // enum PublicCursorAction and moveCursor() are protected in QTreeView.
+ inline QModelIndex doMoveCursor(PublicCursorAction ca, Qt::KeyboardModifiers kbm)
{ return QTreeView::moveCursor((CursorAction)ca, kbm); }
inline void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command)
@@ -177,6 +178,7 @@ private slots:
void emptyModel();
void removeRows();
void removeCols();
+ void limitedExpand();
void expandAndCollapse_data();
void expandAndCollapse();
void expandAndCollapseAll();
@@ -256,6 +258,7 @@ private slots:
void taskQTBUG_13567_removeLastItemRegression();
void taskQTBUG_25333_adjustViewOptionsForIndex();
void taskQTBUG_18539_emitLayoutChanged();
+ void taskQTBUG_8176_emitOnExpandAll();
};
class QtTestModel: public QAbstractItemModel
@@ -1414,6 +1417,45 @@ void tst_QTreeView::removeCols()
QCOMPARE(view.header()->count(), model.cols);
}
+void tst_QTreeView::limitedExpand()
+{
+ {
+ QStandardItemModel model;
+ QStandardItem *parentItem = model.invisibleRootItem();
+ parentItem->appendRow(new QStandardItem);
+ parentItem->appendRow(new QStandardItem);
+ parentItem->appendRow(new QStandardItem);
+
+ QStandardItem *firstItem = model.item(0, 0);
+ firstItem->setFlags(firstItem->flags() | Qt::ItemNeverHasChildren);
+
+ QTreeView view;
+ view.setModel(&model);
+
+ QSignalSpy spy(&view, SIGNAL(expanded(QModelIndex)));
+ QVERIFY(spy.isValid());
+
+ view.expand(model.index(0, 0));
+ QCOMPARE(spy.count(), 0);
+
+ view.expand(model.index(1, 0));
+ QCOMPARE(spy.count(), 1);
+ }
+ {
+ QStringListModel model(QStringList() << "one" << "two");
+ QTreeView view;
+ view.setModel(&model);
+
+ QSignalSpy spy(&view, SIGNAL(expanded(QModelIndex)));
+ QVERIFY(spy.isValid());
+
+ view.expand(model.index(0, 0));
+ QCOMPARE(spy.count(), 0);
+ view.expandAll();
+ QCOMPARE(spy.count(), 0);
+ }
+}
+
void tst_QTreeView::expandAndCollapse_data()
{
QTest::addColumn<bool>("animationEnabled");
@@ -1581,13 +1623,10 @@ void tst_QTreeView::expandAndCollapseAll()
for (int r = 0; r < rows; ++r)
parents.push(model.index(r, 0, p));
}
-// ### why is expanded() signal not emitted?
-// QCOMPARE(expandedSpy.count(), count);
+ QCOMPARE(expandedSpy.count(), 12); // == (3+1)*(2+1) from QtTestModel model(3, 2);
view.collapseAll();
- QCOMPARE(expandedSpy.count(), 0);
-
parents.push(QModelIndex());
count = 0;
while (!parents.isEmpty()) {
@@ -1599,8 +1638,7 @@ void tst_QTreeView::expandAndCollapseAll()
for (int r = 0; r < rows; ++r)
parents.push(model.index(r, 0, p));
}
-// ### why is collapsed() signal not emitted?
-// QCOMPARE(collapsedSpy.count(), count);
+ QCOMPARE(collapsedSpy.count(), 12);
}
void tst_QTreeView::expandWithNoChildren()
@@ -1765,7 +1803,7 @@ void tst_QTreeView::moveCursor()
QCOMPARE(view.currentIndex(), expected);
//then pressing down should go to the next line
- QModelIndex actual = view.moveCursor(PublicView::MoveDown, Qt::NoModifier);
+ QModelIndex actual = view.doMoveCursor(PublicView::MoveDown, Qt::NoModifier);
expected = model.index(2, 1, QModelIndex());
QCOMPARE(actual, expected);
@@ -1774,7 +1812,7 @@ void tst_QTreeView::moveCursor()
// PageUp was broken with uniform row heights turned on
view.setCurrentIndex(model.index(1, 0));
- actual = view.moveCursor(PublicView::MovePageUp, Qt::NoModifier);
+ actual = view.doMoveCursor(PublicView::MovePageUp, Qt::NoModifier);
expected = model.index(0, 0, QModelIndex());
QCOMPARE(actual, expected);
@@ -2818,7 +2856,7 @@ void tst_QTreeView::evilModel()
view.setSelection(rect, QItemSelectionModel::Select);
model.change();
- view.moveCursor(PublicView::MoveDown, Qt::NoModifier);
+ view.doMoveCursor(PublicView::MoveDown, Qt::NoModifier);
model.change();
view.resizeColumnToContents(1);
@@ -4158,6 +4196,47 @@ void tst_QTreeView::taskQTBUG_18539_emitLayoutChanged()
QCOMPARE(afterRISpy.size(), 0);
}
+void tst_QTreeView::taskQTBUG_8176_emitOnExpandAll()
+{
+ QTreeWidget tw;
+ QTreeWidgetItem *item = new QTreeWidgetItem(&tw, QStringList(QString("item 1")));
+ QTreeWidgetItem *item2 = new QTreeWidgetItem(item, QStringList(QString("item 2")));
+ new QTreeWidgetItem(item2, QStringList(QString("item 3")));
+ new QTreeWidgetItem(item2, QStringList(QString("item 4")));
+ QTreeWidgetItem *item5 = new QTreeWidgetItem(&tw, QStringList(QString("item 5")));
+ new QTreeWidgetItem(item5, QStringList(QString("item 6")));
+ QSignalSpy spy(&tw, SIGNAL(expanded(const QModelIndex&)));
+
+ // expand all
+ tw.expandAll();
+ QCOMPARE(spy.size(), 6);
+ spy.clear();
+ tw.collapseAll();
+ item2->setExpanded(true);
+ spy.clear();
+ tw.expandAll();
+ QCOMPARE(spy.size(), 5);
+
+ // collapse all
+ QSignalSpy spy2(&tw, SIGNAL(collapsed(const QModelIndex&)));
+ tw.collapseAll();
+ QCOMPARE(spy2.size(), 6);
+ tw.expandAll();
+ item2->setExpanded(false);
+ spy2.clear();
+ tw.collapseAll();
+ QCOMPARE(spy2.size(), 5);
+
+ // expand to depth
+ item2->setExpanded(true);
+ spy.clear();
+ spy2.clear();
+ tw.expandToDepth(0);
+
+ QCOMPARE(spy.size(), 2); // item and item5 are expanded
+ QCOMPARE(spy2.size(), 1); // item2 is collapsed
+}
+
#ifndef QT_NO_ANIMATION
void tst_QTreeView::quickExpandCollapse()
{
diff --git a/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp b/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
index 7ab68345fa..f1f9f1c01a 100644
--- a/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
+++ b/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
@@ -80,6 +80,7 @@ private slots:
void updateIteratorAfterDeletedItem_and_ContinueIteration_data();
void updateIteratorAfterDeletedItem_and_ContinueIteration();
void initializeIterator();
+ void sortingEnabled();
private:
QTreeWidget *testWidget;
};
@@ -1236,5 +1237,31 @@ void tst_QTreeWidgetItemIterator::initializeIterator()
QCOMPARE((*it), static_cast<QTreeWidgetItem*>(0));
}
+void tst_QTreeWidgetItemIterator::sortingEnabled()
+{
+ QTreeWidget *tree = new QTreeWidget;
+ tree->setColumnCount(2);
+ tree->headerItem()->setText(0, "Id");
+ tree->headerItem()->setText(1, "Color");
+
+ tree->setSortingEnabled(true);
+ tree->sortByColumn(0, Qt::AscendingOrder);
+
+ QTreeWidgetItem *second = new QTreeWidgetItem;
+ second->setText(0, "2");
+ second->setText(1, "second");
+ QTreeWidgetItem *first = new QTreeWidgetItem;
+ first->setText(0, "1");
+ first->setText(1, "first");
+
+ tree->addTopLevelItem(second);
+ tree->addTopLevelItem(first);
+
+ QTreeWidgetItemIterator it(tree);
+ QCOMPARE(*it, first);
+ ++it;
+ QCOMPARE(*it, second);
+}
+
QTEST_MAIN(tst_QTreeWidgetItemIterator)
#include "tst_qtreewidgetitemiterator.moc"
diff --git a/tests/auto/widgets/kernel/kernel.pro b/tests/auto/widgets/kernel/kernel.pro
index b280f44f05..20720dc928 100644
--- a/tests/auto/widgets/kernel/kernel.pro
+++ b/tests/auto/widgets/kernel/kernel.pro
@@ -15,6 +15,7 @@ SUBDIRS=\
qwidgetaction \
qwidgetmetatype \
qwidgetsvariant \
+ qwindowcontainer \
qshortcut \
qsizepolicy
diff --git a/tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp b/tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp
index e24c21feab..e935cfd53a 100644
--- a/tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp
+++ b/tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp
@@ -40,14 +40,15 @@
****************************************************************************/
#include <QApplication>
#include <stdio.h>
-int main(int argc, char *argv[])
+
+int main(int argc, char *argv[])
{
- QApplication app(argc, argv);
+ QApplication app(argc, argv);
if (argc > 1)
fprintf(stderr, "%s", argv[1]);
else
fprintf(stderr, "Failed");
fflush(stderr);
- return 0;
+ return 0;
}
diff --git a/tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp b/tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp
index 63ffc13c68..4efe8c4273 100644
--- a/tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp
+++ b/tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp
@@ -42,6 +42,7 @@
#include <QtTest/QtTest>
#include <QtWidgets/QDesktopWidget>
+#include <QtGui/QWindow>
#include <QDebug>
class tst_QDesktopWidget : public QObject
@@ -63,6 +64,7 @@ private slots:
void screenNumberForQPoint();
void availableGeometry();
void screenGeometry();
+ void topLevels();
};
tst_QDesktopWidget::tst_QDesktopWidget()
@@ -177,6 +179,21 @@ void tst_QDesktopWidget::screenGeometry()
}
}
+void tst_QDesktopWidget::topLevels()
+{
+ // Desktop widgets/windows should not be listed as top-levels.
+ int topLevelDesktopWidgets = 0;
+ int topLevelDesktopWindows = 0;
+ foreach (const QWidget *w, QApplication::topLevelWidgets())
+ if (w->windowType() == Qt::Desktop)
+ topLevelDesktopWidgets++;
+ foreach (const QWindow *w, QGuiApplication::topLevelWindows())
+ if (w->type() == Qt::Desktop)
+ topLevelDesktopWindows++;
+ QCOMPARE(topLevelDesktopWidgets, 0);
+ QCOMPARE(topLevelDesktopWindows, 0);
+}
+
QTEST_MAIN(tst_QDesktopWidget)
#include "tst_qdesktopwidget.moc"
diff --git a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
index d77dd003d7..b970de8e87 100644
--- a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
+++ b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
@@ -169,11 +169,11 @@ void tst_QFormLayout::rowCount()
fl->addRow(tr("Label 2"), new QLineEdit);
fl->addRow(tr("Label 3"), new QLineEdit);
QCOMPARE(fl->rowCount(), 3);
-
+
fl->addRow(new QWidget);
fl->addRow(new QHBoxLayout);
QCOMPARE(fl->rowCount(), 5);
-
+
fl->insertRow(1, tr("Label 0.5"), new QLineEdit);
QCOMPARE(fl->rowCount(), 6);
@@ -206,7 +206,7 @@ void tst_QFormLayout::buddies()
fl->addRow(le3);
QWidget *label3 = fl->labelForField(le3);
QVERIFY(label3 == 0);
-
+
//TODO: empty label?
delete w;
diff --git a/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp b/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
index f830ead6c0..2b9b4fd761 100644
--- a/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
+++ b/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
@@ -155,7 +155,7 @@ void tst_QLayout::geometry()
void tst_QLayout::smartMaxSize()
{
- QVector<int> expectedWidths;
+ QVector<int> expectedWidths;
QFile f(QFINDTESTDATA("baseline/smartmaxsize"));
@@ -170,9 +170,9 @@ void tst_QLayout::smartMaxSize()
f.close();
int sizeCombinations[] = { 0, 10, 20, QWIDGETSIZE_MAX};
- QSizePolicy::Policy policies[] = { QSizePolicy::Fixed,
- QSizePolicy::Minimum,
- QSizePolicy::Maximum,
+ QSizePolicy::Policy policies[] = { QSizePolicy::Fixed,
+ QSizePolicy::Minimum,
+ QSizePolicy::Maximum,
QSizePolicy::Preferred,
QSizePolicy::Expanding,
QSizePolicy::MinimumExpanding,
@@ -250,7 +250,7 @@ void tst_QLayout::setContentsMargins()
MyLayout layout;
layout.invalidated = false;
int left, top, right, bottom;
-
+
layout.setContentsMargins(52, 53, 54, 55);
QVERIFY(layout.invalidated);
layout.invalidated = false;
@@ -260,7 +260,7 @@ void tst_QLayout::setContentsMargins()
QCOMPARE(top, 53);
QCOMPARE(right, 54);
QCOMPARE(bottom, 55);
-
+
layout.setContentsMargins(52, 53, 54, 55);
QVERIFY(!layout.invalidated);
}
diff --git a/tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp b/tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp
index 2d3e3c1702..441277ef53 100644
--- a/tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp
+++ b/tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp
@@ -132,7 +132,7 @@ void tst_QToolTip::whatsThis()
{
qApp->setStyleSheet( "QWidget { font-size: 72px; }" );
QWhatsThis::showText(QPoint(0,0), "THis is text");
- QTest::qWait(400);
+ QTest::qWait(400);
QWidget *whatsthis = 0;
foreach (QWidget *widget, QApplication::topLevelWidgets()) {
if (widget->inherits("QWhatsThat")) {
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index f9ee2e485a..252d47f698 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -412,6 +412,7 @@ private slots:
void keyboardModifiers();
void mouseDoubleClickBubbling_QTBUG29680();
+ void largerThanScreen_QTBUG30142();
private:
bool ensureScreenSize(int width, int height);
@@ -5632,6 +5633,7 @@ void tst_QWidget::showHideShowX11()
qApp->installNativeEventFilter(&w);
w.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&w));
w.hide();
QEventLoop eventLoop;
@@ -10079,5 +10081,20 @@ void tst_QWidget::mouseDoubleClickBubbling_QTBUG29680()
QTRY_VERIFY(parent.triggered);
}
+void tst_QWidget::largerThanScreen_QTBUG30142()
+{
+ QWidget widget;
+ widget.resize(200, 4000);
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+ QVERIFY(widget.frameGeometry().y() >= 0);
+
+ QWidget widget2;
+ widget2.resize(10000, 400);
+ widget2.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget2));
+ QVERIFY(widget2.frameGeometry().x() >= 0);
+}
+
QTEST_MAIN(tst_QWidget)
#include "tst_qwidget.moc"
diff --git a/tests/auto/widgets/kernel/qwindowcontainer/.gitignore b/tests/auto/widgets/kernel/qwindowcontainer/.gitignore
new file mode 100644
index 0000000000..038f477220
--- /dev/null
+++ b/tests/auto/widgets/kernel/qwindowcontainer/.gitignore
@@ -0,0 +1 @@
+tst_qwindowcontainer
diff --git a/tests/auto/widgets/kernel/qwindowcontainer/qwindowcontainer.pro b/tests/auto/widgets/kernel/qwindowcontainer/qwindowcontainer.pro
new file mode 100644
index 0000000000..4ff05eb04a
--- /dev/null
+++ b/tests/auto/widgets/kernel/qwindowcontainer/qwindowcontainer.pro
@@ -0,0 +1,6 @@
+CONFIG += testcase
+mac:CONFIG -= app_bundle
+# CONFIG += parallel_test // Cannot be parallel due to the activation test
+TARGET = tst_qwindowcontainer
+QT += widgets testlib
+SOURCES += tst_qwindowcontainer.cpp
diff --git a/tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp b/tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp
new file mode 100644
index 0000000000..440639cd49
--- /dev/null
+++ b/tests/auto/widgets/kernel/qwindowcontainer/tst_qwindowcontainer.cpp
@@ -0,0 +1,226 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+
+#include <qapplication.h>
+#include <qwindow.h>
+#include <qwidget.h>
+
+
+
+class Window : public QWindow
+{
+public:
+ Window()
+ : numberOfExposes(0)
+ , numberOfObscures(0)
+ {
+ }
+
+ void exposeEvent(QExposeEvent *) {
+ if (isExposed())
+ ++numberOfExposes;
+ else
+ ++numberOfObscures;
+ }
+
+ int numberOfExposes;
+ int numberOfObscures;
+};
+
+
+
+class tst_QWindowContainer: public QObject
+{
+ Q_OBJECT
+private slots:
+ void testShow();
+ void testPositionAndSize();
+ void testExposeObscure();
+ void testOwnership();
+ void testBehindTheScenesDeletion();
+ void testUnparenting();
+ void testActivation();
+};
+
+
+
+void tst_QWindowContainer::testShow()
+{
+ QWidget root;
+ root.setGeometry(100, 100, 400, 400);
+
+ Window *window = new Window();
+ QWidget *container = QWidget::createWindowContainer(window, &root);
+
+ container->setGeometry(50, 50, 200, 200);
+
+ root.show();
+
+ QVERIFY(QTest::qWaitForWindowExposed(window));
+}
+
+
+
+void tst_QWindowContainer::testPositionAndSize()
+{
+ QWindow *window = new QWindow();
+ window->setGeometry(300, 400, 500, 600);
+
+ QWidget *container = QWidget::createWindowContainer(window);
+ container->setGeometry(50, 50, 200, 200);
+
+
+ container->show();
+ QVERIFY(QTest::qWaitForWindowExposed(container));
+
+ QCOMPARE(window->x(), 0);
+ QCOMPARE(window->y(), 0);
+ QCOMPARE(window->width(), container->width());
+ QCOMPARE(window->height(), container->height());
+}
+
+
+
+void tst_QWindowContainer::testExposeObscure()
+{
+ Window *window = new Window();
+
+ QWidget *container = QWidget::createWindowContainer(window);
+ container->setGeometry(50, 50, 200, 200);
+
+ container->show();
+ QVERIFY(QTest::qWaitForWindowExposed(container));
+ QVERIFY(QTest::qWaitForWindowExposed(window));
+
+ QVERIFY(window->numberOfExposes > 0);
+
+ container->hide();
+
+ QElapsedTimer timer;
+ timer.start();
+ while (window->numberOfObscures == 0 && timer.elapsed() < 5000) {
+ QTest::qWait(10);
+ }
+
+ QVERIFY(window->numberOfObscures > 0);
+}
+
+
+
+void tst_QWindowContainer::testOwnership()
+{
+ QPointer<QWindow> window(new QWindow());
+ QWidget *container = QWidget::createWindowContainer(window);
+
+ delete container;
+
+ QCOMPARE(window.data(), (QWindow *) 0);
+}
+
+
+
+void tst_QWindowContainer::testBehindTheScenesDeletion()
+{
+ QWindow *window = new QWindow();
+ QWidget *container = QWidget::createWindowContainer(window);
+
+ delete window;
+
+ // The child got removed, showing not should not have any side effects,
+ // such as for instance, crashing...
+ container->show();
+ QVERIFY(QTest::qWaitForWindowExposed(container));
+ delete container;
+}
+
+
+
+void tst_QWindowContainer::testActivation()
+{
+ QWidget root;
+
+ QWindow *window = new QWindow();
+ QWidget *container = QWidget::createWindowContainer(window, &root);
+
+ container->setGeometry(100, 100, 200, 100);
+ root.setGeometry(100, 100, 400, 300);
+
+ root.show();
+ root.activateWindow();
+
+ QVERIFY(QTest::qWaitForWindowActive(root.windowHandle()));
+ QVERIFY(QGuiApplication::focusWindow() == root.windowHandle());
+
+ // Under KDE (ubuntu 12.10), we experience that doing two activateWindow in a row
+ // does not work. The second gets ignored by the window manager, even though the
+ // timestamp in the xcb connection is unique for both.
+ if (QGuiApplication::platformName() == "xcb")
+ QTest::qWait(100);
+
+ window->requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(window));
+ QVERIFY(QGuiApplication::focusWindow() == window);
+}
+
+
+
+void tst_QWindowContainer::testUnparenting()
+{
+ QWindow *window = new QWindow();
+ QWidget *container = QWidget::createWindowContainer(window);
+ container->setGeometry(100, 100, 200, 100);
+
+ window->setParent(0);
+
+ container->show();
+
+ QVERIFY(QTest::qWaitForWindowExposed(container));
+
+ // Window should not be made visible by container..
+ QVERIFY(!window->isVisible());
+}
+
+QTEST_MAIN(tst_QWindowContainer)
+
+#include "tst_qwindowcontainer.moc"
diff --git a/tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp b/tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp
index 12e9fe451c..7925820b70 100644
--- a/tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp
+++ b/tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp
@@ -117,7 +117,7 @@ void tst_QMacStyle::sizeHints_data()
void tst_QMacStyle::sizeHints()
{
- QFETCH(Size, size);
+ QFETCH(Size, size);
QDialog w;
setSize(&w, size);
@@ -234,7 +234,7 @@ void tst_QMacStyle::layoutMargins_data()
void tst_QMacStyle::layoutMargins()
{
- QFETCH(Size, size);
+ QFETCH(Size, size);
QWidget w;
setSize(&w, size);
diff --git a/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp b/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
index cf867194cc..c733fadbf5 100644
--- a/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
+++ b/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
@@ -234,7 +234,10 @@ void tst_QStyle::testProxyStyle()
QVERIFY(proxyStyle->baseStyle());
qApp->setStyle(proxyStyle);
- QProxyStyle doubleProxy(new QProxyStyle(QStyleFactory::create("Windows")));
+ QProxyStyle* baseStyle = new QProxyStyle("Windows");
+ QCOMPARE(baseStyle->baseStyle()->objectName(), style->objectName());
+
+ QProxyStyle doubleProxy(baseStyle);
QVERIFY(testAllFunctions(&doubleProxy));
CustomProxy customStyle;
@@ -738,7 +741,7 @@ public:
void tst_QStyle::testDrawingShortcuts()
{
- {
+ {
QWidget w;
setFrameless(&w);
QToolButton *tb = new QToolButton(&w);
@@ -768,14 +771,14 @@ void tst_QStyle::testDrawingShortcuts()
bool showMnemonic = dts->styleHint(QStyle::SH_UnderlineShortcut, &sotb, tb);
QVERIFY(dts->alignment & (showMnemonic ? Qt::TextShowMnemonic : Qt::TextHideMnemonic));
delete dts;
- }
+ }
}
#define SCROLLBAR_SPACING 33
class FrameTestStyle : public QProxyStyle {
public:
- FrameTestStyle() : QProxyStyle(QStyleFactory::create("Windows")) { }
+ FrameTestStyle() : QProxyStyle("Windows") { }
int styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *widget, QStyleHintReturn *returnData) const {
if (hint == QStyle::SH_ScrollView_FrameOnlyAroundContents)
return 1;
diff --git a/tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp b/tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp
index 1203e12045..8a00198cf1 100644
--- a/tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp
+++ b/tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp
@@ -44,7 +44,7 @@
#include <QStyleOption>
-class tst_QStyleOption: public QObject
+class tst_QStyleOption: public QObject
{
Q_OBJECT
@@ -54,7 +54,7 @@ private slots:
void copyconstructors();
};
-// Just a simple container for QStyleOption-pointer
+// Just a simple container for QStyleOption-pointer
struct StyleOptionPointerBase
{
QStyleOption *pointer;
@@ -80,7 +80,7 @@ void tst_QStyleOption::qstyleoptioncast_data()
{
QTest::addColumn<StyleOptionPointerBase *>("testOption");
QTest::addColumn<bool>("canCastToComplex");
- QTest::addColumn<int>("type");
+ QTest::addColumn<int>("type");
QTest::newRow("optionDefault") << stylePtr(new QStyleOption) << false << int(QStyleOption::SO_Default);
QTest::newRow("optionButton") << stylePtr(new QStyleOptionButton) << false << int(QStyleOption::SO_Button);
diff --git a/tests/auto/widgets/util/qscroller/tst_qscroller.cpp b/tests/auto/widgets/util/qscroller/tst_qscroller.cpp
index a53da5275c..bbd71a9284 100644
--- a/tests/auto/widgets/util/qscroller/tst_qscroller.cpp
+++ b/tests/auto/widgets/util/qscroller/tst_qscroller.cpp
@@ -363,6 +363,9 @@ void tst_QScroller::scrollerProperties()
void tst_QScroller::scrollTo()
{
+#ifdef Q_OS_MAC
+ QSKIP("Flakey test - https://bugreports.qt-project.org/browse/QTBUG-29950");
+#endif
{
tst_QScrollerWidget *sw = new tst_QScrollerWidget();
sw->scrollArea = QRectF( 0, 0, 1000, 1000 );
@@ -389,11 +392,9 @@ void tst_QScroller::scrollTo()
void tst_QScroller::scroll()
{
-#if defined(Q_OS_MACX) && (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6)
- QSKIP("Mac OS X < 10.6 does not support QTouchEvents");
- return;
+#ifdef Q_OS_MAC
+ QSKIP("Flakey test - https://bugreports.qt-project.org/browse/QTBUG-30133");
#endif
-
#ifndef QT_NO_GESTURES
// -- good case. normal scroll
tst_QScrollerWidget *sw = new tst_QScrollerWidget();
@@ -436,11 +437,9 @@ void tst_QScroller::scroll()
void tst_QScroller::overshoot()
{
-#if defined(Q_OS_MACX) && (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6)
- QSKIP("Mac OS X < 10.6 does not support QTouchEvents");
- return;
+#ifdef Q_OS_MAC
+ QSKIP("Flakey test - https://bugreports.qt-project.org/browse/QTBUG-29950");
#endif
-
#ifndef QT_NO_GESTURES
tst_QScrollerWidget *sw = new tst_QScrollerWidget();
sw->scrollArea = QRectF(0, 0, 1000, 1000);
diff --git a/tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp b/tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp
index c8a12a9866..ddab98ebc6 100644
--- a/tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp
+++ b/tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp
@@ -599,7 +599,7 @@ void tst_QUndoGroup::addStackAndDie()
{
// Test that QUndoStack doesn't keep a reference to QUndoGroup after the
// group is deleted.
- QUndoStack *stack = new QUndoStack;
+ QUndoStack *stack = new QUndoStack;
QUndoGroup *group = new QUndoGroup;
group->addStack(stack);
delete group;
diff --git a/tests/auto/widgets/util/qundostack/tst_qundostack.cpp b/tests/auto/widgets/util/qundostack/tst_qundostack.cpp
index 9b48dc7798..4556816655 100644
--- a/tests/auto/widgets/util/qundostack/tst_qundostack.cpp
+++ b/tests/auto/widgets/util/qundostack/tst_qundostack.cpp
@@ -290,52 +290,52 @@ static void checkState(QSignalSpy &redoTextChangedSpy,
const bool _undoChanged,
const bool _redoChanged)
{
- QCOMPARE(stack.count(), _count);
- QCOMPARE(stack.isClean(), _clean);
- QCOMPARE(stack.index(), _index);
- QCOMPARE(stack.canUndo(), _canUndo);
- QCOMPARE(stack.undoText(), QString(_undoText));
- QCOMPARE(stack.canRedo(), _canRedo);
- QCOMPARE(stack.redoText(), QString(_redoText));
- if (_indexChanged) {
- QCOMPARE(indexChangedSpy.count(), 1);
- QCOMPARE(indexChangedSpy.at(0).at(0).toInt(), _index);
- indexChangedSpy.clear();
- } else {
- QCOMPARE(indexChangedSpy.count(), 0);
- }
- if (_cleanChanged) {
- QCOMPARE(cleanChangedSpy.count(), 1);
- QCOMPARE(cleanChangedSpy.at(0).at(0).toBool(), _clean);
- cleanChangedSpy.clear();
- } else {
- QCOMPARE(cleanChangedSpy.count(), 0);
- }
- if (_undoChanged) {
- QCOMPARE(canUndoChangedSpy.count(), 1);
- QCOMPARE(canUndoChangedSpy.at(0).at(0).toBool(), _canUndo);
- QCOMPARE(undoAction->isEnabled(), _canUndo);
- QCOMPARE(undoTextChangedSpy.count(), 1);
- QCOMPARE(undoTextChangedSpy.at(0).at(0).toString(), QString(_undoText));
- QCOMPARE(undoAction->text(), glue("foo", _undoText));
- canUndoChangedSpy.clear();
- undoTextChangedSpy.clear();
- } else {
- QCOMPARE(canUndoChangedSpy.count(), 0);
- QCOMPARE(undoTextChangedSpy.count(), 0);
- }
- if (_redoChanged) {
- QCOMPARE(canRedoChangedSpy.count(), 1);
- QCOMPARE(canRedoChangedSpy.at(0).at(0).toBool(), _canRedo);
- QCOMPARE(redoAction->isEnabled(), _canRedo);
- QCOMPARE(redoTextChangedSpy.count(), 1);
- QCOMPARE(redoTextChangedSpy.at(0).at(0).toString(), QString(_redoText));
- QCOMPARE(redoAction->text(), glue("bar", _redoText));
- canRedoChangedSpy.clear();
- redoTextChangedSpy.clear();
- } else {
- QCOMPARE(canRedoChangedSpy.count(), 0);
- QCOMPARE(redoTextChangedSpy.count(), 0);
+ QCOMPARE(stack.count(), _count);
+ QCOMPARE(stack.isClean(), _clean);
+ QCOMPARE(stack.index(), _index);
+ QCOMPARE(stack.canUndo(), _canUndo);
+ QCOMPARE(stack.undoText(), QString(_undoText));
+ QCOMPARE(stack.canRedo(), _canRedo);
+ QCOMPARE(stack.redoText(), QString(_redoText));
+ if (_indexChanged) {
+ QCOMPARE(indexChangedSpy.count(), 1);
+ QCOMPARE(indexChangedSpy.at(0).at(0).toInt(), _index);
+ indexChangedSpy.clear();
+ } else {
+ QCOMPARE(indexChangedSpy.count(), 0);
+ }
+ if (_cleanChanged) {
+ QCOMPARE(cleanChangedSpy.count(), 1);
+ QCOMPARE(cleanChangedSpy.at(0).at(0).toBool(), _clean);
+ cleanChangedSpy.clear();
+ } else {
+ QCOMPARE(cleanChangedSpy.count(), 0);
+ }
+ if (_undoChanged) {
+ QCOMPARE(canUndoChangedSpy.count(), 1);
+ QCOMPARE(canUndoChangedSpy.at(0).at(0).toBool(), _canUndo);
+ QCOMPARE(undoAction->isEnabled(), _canUndo);
+ QCOMPARE(undoTextChangedSpy.count(), 1);
+ QCOMPARE(undoTextChangedSpy.at(0).at(0).toString(), QString(_undoText));
+ QCOMPARE(undoAction->text(), glue("foo", _undoText));
+ canUndoChangedSpy.clear();
+ undoTextChangedSpy.clear();
+ } else {
+ QCOMPARE(canUndoChangedSpy.count(), 0);
+ QCOMPARE(undoTextChangedSpy.count(), 0);
+ }
+ if (_redoChanged) {
+ QCOMPARE(canRedoChangedSpy.count(), 1);
+ QCOMPARE(canRedoChangedSpy.at(0).at(0).toBool(), _canRedo);
+ QCOMPARE(redoAction->isEnabled(), _canRedo);
+ QCOMPARE(redoTextChangedSpy.count(), 1);
+ QCOMPARE(redoTextChangedSpy.at(0).at(0).toString(), QString(_redoText));
+ QCOMPARE(redoAction->text(), glue("bar", _redoText));
+ canRedoChangedSpy.clear();
+ redoTextChangedSpy.clear();
+ } else {
+ QCOMPARE(canRedoChangedSpy.count(), 0);
+ QCOMPARE(redoTextChangedSpy.count(), 0);
}
}
diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
index 9ecb0650c5..53c3eb1ed0 100644
--- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
+++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
@@ -316,7 +316,6 @@ void tst_QDateTimeEdit::getSetCheck()
tst_QDateTimeEdit::tst_QDateTimeEdit()
{
- qRegisterMetaType<QList<int> >("QList<int>");
}
tst_QDateTimeEdit::~tst_QDateTimeEdit()
@@ -759,6 +758,11 @@ void tst_QDateTimeEdit::displayFormat()
void tst_QDateTimeEdit::selectAndScrollWithKeys()
{
+#ifdef Q_OS_MAC
+ QSKIP("QTBUG-23674");
+ return;
+#endif
+
qApp->setActiveWindow(testWidget);
testWidget->setDate(QDate(2004, 05, 11));
testWidget->setDisplayFormat("dd/MM/yyyy");
@@ -769,9 +773,6 @@ void tst_QDateTimeEdit::selectAndScrollWithKeys()
QTest::keyClick(testWidget, Qt::Key_Home);
#endif
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier);
-#ifdef Q_OS_MAC
- QEXPECT_FAIL("", "QTBUG-23674", Abort);
-#endif
QCOMPARE(testWidget->lineEdit()->selectedText(), QString("1"));
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier);
QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11"));
@@ -3426,11 +3427,11 @@ void tst_QDateTimeEdit::deleteCalendarWidget()
edit.setCalendarPopup(true);
QVERIFY(edit.calendarWidget());
edit.calendarWidget()->setObjectName("cw1");;
-
+
// delete
cw = edit.calendarWidget();
delete cw;
-
+
// it should create a new widget
QVERIFY(edit.calendarWidget());
QVERIFY(edit.calendarWidget()->objectName() != "cw1");
diff --git a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
index c7c9980f13..59be9bd659 100644
--- a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
+++ b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
@@ -68,8 +68,8 @@ public slots:
private slots:
void standardButtons();
void testConstructor1();
- void testConstrurtor2();
- void testConstrurtor2_data();
+ void testConstructor2();
+ void testConstructor2_data();
void testConstructor3();
void testConstructor3_data();
void setOrientation_data();
@@ -146,7 +146,7 @@ void tst_QDialogButtonBox::layoutReuse()
delete box;
}
-void tst_QDialogButtonBox::testConstrurtor2_data()
+void tst_QDialogButtonBox::testConstructor2_data()
{
QTest::addColumn<int>("orientation");
@@ -154,7 +154,7 @@ void tst_QDialogButtonBox::testConstrurtor2_data()
QTest::newRow("vertical") << int(Qt::Vertical);
}
-void tst_QDialogButtonBox::testConstrurtor2()
+void tst_QDialogButtonBox::testConstructor2()
{
QFETCH(int, orientation);
Qt::Orientation orient = Qt::Orientation(orientation);
diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
index 6e3432b575..896d4e8e6f 100644
--- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
+++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
@@ -59,7 +59,7 @@
#include "../../../qtest-config.h"
-static uchar restoreData41[] = { 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x0, 0x0, 0x1, 0x19, 0xfc, 0x2, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x34, 0x1, 0x0, 0x0, 0x0, 0x49, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x38, 0x1, 0x0, 0x0, 0x0, 0x8d, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x32, 0x1, 0x0, 0x0, 0x0, 0xd4, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x64, 0x0, 0x0, 0x1, 0x19, 0xfc, 0x2, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x35, 0x1, 0x0, 0x0, 0x0, 0x49, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x39, 0x1, 0x0, 0x0, 0x0, 0x8d, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x33, 0x1, 0x0, 0x0, 0x0, 0xd4, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x1, 0x89, 0x0, 0x0, 0x0, 0xe, 0xfc, 0x1, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x32, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x36, 0x1, 0x0, 0x0, 0x0, 0x63, 0x0, 0x0, 0x0, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x30, 0x1, 0x0, 0x0, 0x0, 0xc8, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x34, 0x1, 0x0, 0x0, 0x1, 0x2a, 0x0, 0x0, 0x0, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x89, 0x0, 0x0, 0x0, 0xe, 0xfc, 0x1, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x33, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x37, 0x1, 0x0, 0x0, 0x0, 0x63, 0x0, 0x0, 0x0, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x31, 0x1, 0x0, 0x0, 0x0, 0xc8, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x35, 0x1, 0x0, 0x0, 0x1, 0x2a, 0x0, 0x0, 0x0, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0xc1, 0x0, 0x0, 0x1, 0x19};
+static uchar restoreData41[] = { 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x64, 0x0, 0x0, 0x1, 0x19, 0xfc, 0x2, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x30, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x34, 0x1, 0x0, 0x0, 0x0, 0x49, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x38, 0x1, 0x0, 0x0, 0x0, 0x8d, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x32, 0x1, 0x0, 0x0, 0x0, 0xd4, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x64, 0x0, 0x0, 0x1, 0x19, 0xfc, 0x2, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x35, 0x1, 0x0, 0x0, 0x0, 0x49, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x39, 0x1, 0x0, 0x0, 0x0, 0x8d, 0x0, 0x0, 0x0, 0x43, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x33, 0x1, 0x0, 0x0, 0x0, 0xd4, 0x0, 0x0, 0x0, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x1, 0x89, 0x0, 0x0, 0x0, 0xe, 0xfc, 0x1, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x32, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x36, 0x1, 0x0, 0x0, 0x0, 0x63, 0x0, 0x0, 0x0, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x30, 0x1, 0x0, 0x0, 0x0, 0xc8, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x34, 0x1, 0x0, 0x0, 0x1, 0x2a, 0x0, 0x0, 0x0, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x1, 0x89, 0x0, 0x0, 0x0, 0xe, 0xfc, 0x1, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x33, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x37, 0x1, 0x0, 0x0, 0x0, 0x63, 0x0, 0x0, 0x0, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x31, 0x1, 0x0, 0x0, 0x0, 0xc8, 0x0, 0x0, 0x0, 0x5e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x35, 0x1, 0x0, 0x0, 0x1, 0x2a, 0x0, 0x0, 0x0, 0x5f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0xc1, 0x0, 0x0, 0x1, 0x19};
static uchar restoreData42[] = { 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24, 0x0, 0x0, 0x2, 0x2b, 0xfc, 0x2, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x30, 0x1, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x88, 0x0, 0x0, 0x0, 0x21, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x34, 0x1, 0x0, 0x0, 0x0, 0xb6, 0x0, 0x0, 0x0, 0x88, 0x0, 0x0, 0x0, 0x21, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x38, 0x1, 0x0, 0x0, 0x1, 0x42, 0x0, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x21, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x32, 0x1, 0x0, 0x0, 0x1, 0xcd, 0x0, 0x0, 0x0, 0x88, 0x0, 0x0, 0x0, 0x21, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x98, 0x0, 0x0, 0x2, 0x2b, 0xfc, 0x2, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x1, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x88, 0x0, 0x0, 0x0, 0x21, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x35, 0x1, 0x0, 0x0, 0x0, 0xb6, 0x0, 0x0, 0x0, 0x88, 0x0, 0x0, 0x0, 0x21, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x39, 0x1, 0x0, 0x0, 0x1, 0x42, 0x0, 0x0, 0x0, 0x87, 0x0, 0x0, 0x0, 0x21, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x33, 0x1, 0x0, 0x0, 0x1, 0xcd, 0x0, 0x0, 0x0, 0x88, 0x0, 0x0, 0x0, 0x21, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x4, 0x4e, 0x0, 0x0, 0x0, 0x26, 0xfc, 0x1, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x32, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x12, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x36, 0x1, 0x0, 0x0, 0x1, 0x16, 0x0, 0x0, 0x1, 0xe, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x30, 0x1, 0x0, 0x0, 0x2, 0x28, 0x0, 0x0, 0x1, 0x14, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x34, 0x1, 0x0, 0x0, 0x3, 0x40, 0x0, 0x0, 0x1, 0xe, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x4, 0x4e, 0x0, 0x0, 0x0, 0x26, 0xfc, 0x1, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x33, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x12, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x37, 0x1, 0x0, 0x0, 0x1, 0x16, 0x0, 0x0, 0x1, 0xe, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x31, 0x1, 0x0, 0x0, 0x2, 0x28, 0x0, 0x0, 0x1, 0x14, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x35, 0x1, 0x0, 0x0, 0x3, 0x40, 0x0, 0x0, 0x1, 0xe, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x3, 0x8a, 0x0, 0x0, 0x2, 0x2b, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8};
static uchar restoreData43[] = { 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x50, 0x0, 0x0, 0x0, 0xa0, 0xfc, 0x2, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x30, 0x1, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x16, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x34, 0x1, 0x0, 0x0, 0x0, 0x53, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x16, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x38, 0x1, 0x0, 0x0, 0x0, 0x7c, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x16, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x32, 0x1, 0x0, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x16, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x98, 0x0, 0x0, 0x0, 0xa0, 0xfc, 0x2, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x1, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x16, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x35, 0x1, 0x0, 0x0, 0x0, 0x53, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x16, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x39, 0x1, 0x0, 0x0, 0x0, 0x7c, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x16, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x33, 0x1, 0x0, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x0, 0x25, 0x0, 0x0, 0x0, 0x16, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x1, 0xa8, 0x0, 0x0, 0x0, 0x26, 0xfc, 0x1, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x32, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x0, 0x0, 0x0, 0x50, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x36, 0x1, 0x0, 0x0, 0x0, 0x6c, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x0, 0x50, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x30, 0x1, 0x0, 0x0, 0x0, 0xd6, 0x0, 0x0, 0x0, 0x68, 0x0, 0x0, 0x0, 0x50, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x34, 0x1, 0x0, 0x0, 0x1, 0x42, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x0, 0x50, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x1, 0xa8, 0x0, 0x0, 0x0, 0x26, 0xfc, 0x1, 0x0, 0x0, 0x0, 0x4, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x33, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x0, 0x0, 0x0, 0x50, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xc, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x37, 0x1, 0x0, 0x0, 0x0, 0x6c, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x0, 0x50, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x31, 0x1, 0x0, 0x0, 0x0, 0xd6, 0x0, 0x0, 0x0, 0x68, 0x0, 0x0, 0x0, 0x50, 0x0, 0xff, 0xff, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xe, 0x0, 0x64, 0x0, 0x6f, 0x0, 0x63, 0x0, 0x6b, 0x0, 0x20, 0x0, 0x31, 0x0, 0x35, 0x1, 0x0, 0x0, 0x1, 0x42, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x0, 0x50, 0x0, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0xb8, 0x0, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0xfc, 0x0, 0x0, 0x0, 0x0};
// Local scope class to simulate toolbar move.
@@ -1273,7 +1273,7 @@ void tst_QMainWindow::restoreStateFromPreviousVersion()
QMainWindow win;
win.setCentralWidget(new QTextEdit);
QVector<QDockWidget*> docks;
-
+
for(int i = 0; i < 16; ++i) {
const QString name = QString::fromLatin1("dock %1").arg(i);
QDockWidget *dock = new QDockWidget(name);
@@ -1288,7 +1288,7 @@ void tst_QMainWindow::restoreStateFromPreviousVersion()
QCOMPARE( win.dockWidgetArea(docks[i]), Qt::DockWidgetArea(1 << i%4));
}
}
-
+
}
@@ -1631,7 +1631,7 @@ void tst_QMainWindow::isSeparator()
QVERIFY( mw.isSeparator(QPoint(4, dockw->pos().y() + dockw->size().height())));
QVERIFY( mw.isSeparator(QPoint(4, dockw->pos().y() + dockw->size().height() + margin)));
QVERIFY(!mw.isSeparator(QPoint(4, dockw->pos().y() + dockw->size().height() + 15)));
-
+
}
class MainWindow : public QMainWindow {
@@ -1668,7 +1668,7 @@ void tst_QMainWindow::addToolbarAfterShow()
//this is for task 243119
QMainWindow mainWindow;
mainWindow.show();
-
+
QToolBar toolBar;
mainWindow.addToolBar(&toolBar);
QTest::qWait(100);
diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
index 6364727e0e..72945a9fd2 100644
--- a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
+++ b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
@@ -290,7 +290,6 @@ private slots:
private:
QMdiSubWindow *activeWindow;
- bool accelPressed;
};
tst_QMdiArea::tst_QMdiArea()
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index 354ccea06c..519aa61061 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -1122,7 +1122,6 @@ void tst_QMenuBar::check_menuPosition()
void tst_QMenuBar::task223138_triggered()
{
- qRegisterMetaType<QAction *>("QAction *");
//we create a window with submenus and we check that both menubar and menus get the triggered signal
QMainWindow win;
QMenu *menu = win.menuBar()->addMenu("test");
diff --git a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
index 0696aa11d2..e373e50e0a 100644
--- a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
+++ b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
@@ -42,6 +42,7 @@
#include <QtTest/QtTest>
#include "qprogressbar.h"
+#include <qlocale.h>
#include <qapplication.h>
#include <qstyleoption.h>
#include <qdebug.h>
@@ -64,6 +65,7 @@ private slots:
void sizeHint();
void formatedText_data();
void formatedText();
+ void localizedFormattedText();
void task245201_testChangeStyleAndDelete_data();
void task245201_testChangeStyleAndDelete();
@@ -310,6 +312,40 @@ void tst_QProgressBar::formatedText()
QCOMPARE(bar.text(), text);
}
+void tst_QProgressBar::localizedFormattedText() // QTBUG-28751
+{
+ QProgressBar bar;
+ const int value = 42;
+ bar.setValue(value);
+ const QString defaultExpectedNumber = QString::number(value);
+ const QString defaultExpectedValue = defaultExpectedNumber + QLatin1Char('%');
+ QCOMPARE(bar.text(), defaultExpectedValue);
+
+ // Temporarily switch to Egyptian, which has a different percent sign and number formatting
+ QLocale egypt(QLocale::Arabic, QLocale::Egypt);
+ bar.setLocale(egypt);
+ const QString egyptianExpectedNumber = egypt.toString(value);
+ const QString egyptianExpectedValue = egyptianExpectedNumber + egypt.percent();
+ if (egyptianExpectedValue == defaultExpectedValue)
+ QSKIP("Egyptian locale does not work on this system.");
+ QCOMPARE(bar.text(), egyptianExpectedValue);
+
+ bar.setLocale(QLocale());
+ QCOMPARE(bar.text(), defaultExpectedValue);
+
+ // Set a custom format containing only the number
+ bar.setFormat(QStringLiteral("%p"));
+ QCOMPARE(bar.text(), defaultExpectedNumber);
+ bar.setLocale(egypt);
+ QCOMPARE(bar.text(), egyptianExpectedNumber);
+
+ // Clear the format
+ bar.resetFormat();
+ QCOMPARE(bar.text(), egyptianExpectedValue);
+ bar.setLocale(QLocale());
+ QCOMPARE(bar.text(), defaultExpectedValue);
+}
+
void tst_QProgressBar::task245201_testChangeStyleAndDelete_data()
{
QTest::addColumn<QString>("style1_str");
diff --git a/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp b/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp
index 26daf11b3a..a1a4e33a4b 100644
--- a/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp
+++ b/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp
@@ -120,7 +120,7 @@ void tst_QScrollArea::ensureMicroFocusVisible_Task_167838()
parent->setLayout(new QVBoxLayout);
QWidget *child = new WidgetWithMicroFocus;
parent->layout()->addWidget(child);
- parent->resize(300, 300);
+ parent->resize(300, 300);
scrollArea.setWidget(parent);
scrollArea.ensureWidgetVisible(child, 10, 10);
QRect microFocus = child->inputMethodQuery(Qt::ImMicroFocus).toRect();
diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
index a2c7c04977..340eefbf17 100644
--- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
+++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
@@ -242,17 +242,17 @@ void tst_QSplitter::saveAndRestoreState()
QFETCH(IntList, initialSizes);
splitter->setSizes(initialSizes);
QApplication::instance()->sendPostedEvents();
-
+
QSplitter *splitter2 = new QSplitter(splitter->orientation() == Qt::Horizontal ?
Qt::Vertical : Qt::Horizontal);
for (int i = 0; i < splitter->count(); ++i) {
- splitter2->addWidget(new QWidget());
+ splitter2->addWidget(new QWidget());
}
- splitter2->resize(splitter->size());
+ splitter2->resize(splitter->size());
splitter2->setChildrenCollapsible(!splitter->childrenCollapsible());
splitter2->setOpaqueResize(!splitter->opaqueResize());
splitter2->setHandleWidth(splitter->handleWidth()+3);
-
+
QByteArray ba = splitter->saveState();
QVERIFY(splitter2->restoreState(ba));
@@ -269,10 +269,10 @@ void tst_QSplitter::saveAndRestoreState()
}
// destroy version and magic number
- for (int i = 0; i < ba.size(); ++i)
+ for (int i = 0; i < ba.size(); ++i)
ba[i] = ~ba.at(i);
QVERIFY(!splitter2->restoreState(ba));
-
+
delete splitter2;
}
@@ -688,7 +688,7 @@ void tst_QSplitter::task187373_addAbstractScrollAreas()
}
//! A simple QTextEdit which can switch between two different size states
-class MyTextEdit : public QTextEdit
+class MyTextEdit : public QTextEdit
{
public:
MyTextEdit(const QString & text, QWidget* parent = NULL)
diff --git a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
index 48cbc66ba9..5dd9ee9b0f 100644
--- a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
+++ b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
@@ -454,7 +454,7 @@ void tst_QTabWidget::removeTab()
tw->addTab(new QLabel("5"), "5");
QCOMPARE(ob.count, 1);
QCOMPARE(tw->count(), 5);
-
+
tw->setCurrentIndex(4);
QCOMPARE(ob.count,5);
tw->removeTab(4);
@@ -533,7 +533,7 @@ void tst_QTabWidget::keyboardNavigation()
tw->setTabEnabled(2, false);
QTest::keyClick(tw, Qt::Key_Tab, Qt::ControlModifier);
// TODO: Disabling the current tab will move current tab to the next,
- // but what if next tab is also disabled. We should look into this.
+ // but what if next tab is also disabled. We should look into this.
QVERIFY(tw->currentIndex() < 3 && tw->currentIndex() >= 0);
}
diff --git a/tests/auto/xml/dom/qdom/tst_qdom.cpp b/tests/auto/xml/dom/qdom/tst_qdom.cpp
index e654a41ddd..6b4bc3cd35 100644
--- a/tests/auto/xml/dom/qdom/tst_qdom.cpp
+++ b/tests/auto/xml/dom/qdom/tst_qdom.cpp
@@ -1684,7 +1684,7 @@ static const QChar umlautName[] =
/*!
\internal
-
+
Write a german umlaut to a QByteArray, via a QTextStream.
*/
void tst_QDom::germanUmlautToByteArray() const
@@ -1701,7 +1701,7 @@ void tst_QDom::germanUmlautToByteArray() const
ts.setCodec("UTF-8");
ts << d.toString();
buffer.close();
-
+
QByteArray baseline("<a");
/* http://www.fileformat.info/info/unicode/char/00FC/index.htm */
@@ -1714,7 +1714,7 @@ void tst_QDom::germanUmlautToByteArray() const
/*!
\internal
-
+
Write a german umlaut to a QFile, via a QTextStream.
*/
void tst_QDom::germanUmlautToFile() const
@@ -1757,15 +1757,15 @@ void tst_QDom::germanUmlautToFile() const
void tst_QDom::setInvalidDataPolicy() const
{
- QDomImplementation::setInvalidDataPolicy(QDomImplementation::ReturnNullNode);
- QDomDocument doc;
- QDomElement elem = doc.createElement("invalid name");
+ QDomImplementation::setInvalidDataPolicy(QDomImplementation::ReturnNullNode);
+ QDomDocument doc;
+ QDomElement elem = doc.createElement("invalid name");
QVERIFY(elem.isNull());
}
void tst_QDom::crashInSetContent() const
{
- QDomImplementation::setInvalidDataPolicy(QDomImplementation::ReturnNullNode);
+ QDomImplementation::setInvalidDataPolicy(QDomImplementation::ReturnNullNode);
QDomDocument docImport;
QCOMPARE(docImport.setContent(QLatin1String("<a:>text</a:>"), true), false);
@@ -1774,7 +1774,7 @@ void tst_QDom::crashInSetContent() const
void tst_QDom::doubleNamespaceDeclarations() const
{
- QDomDocument doc;
+ QDomDocument doc;
QString testFile = QFINDTESTDATA("doubleNamespaces.xml");
if (testFile.isEmpty())
@@ -1782,7 +1782,7 @@ void tst_QDom::doubleNamespaceDeclarations() const
QFile file(testFile);
QVERIFY(file.open(QIODevice::ReadOnly));
- QXmlSimpleReader reader;
+ QXmlSimpleReader reader;
QXmlInputSource source(&file);
QVERIFY(doc.setContent(&source, &reader));
diff --git a/tests/auto/xml/sax/qxml/tst_qxml.cpp b/tests/auto/xml/sax/qxml/tst_qxml.cpp
index 7f597f83d3..0ce8d363c9 100644
--- a/tests/auto/xml/sax/qxml/tst_qxml.cpp
+++ b/tests/auto/xml/sax/qxml/tst_qxml.cpp
@@ -62,7 +62,7 @@ class MyXmlEntityResolver : public QXmlEntityResolver
{
public:
MyXmlEntityResolver() : QXmlEntityResolver() {}
- QString errorString() const { return QString(); }
+ QString errorString() const { return QString(); }
bool resolveEntity(const QString &, const QString &, QXmlInputSource *&) { return false; }
};
@@ -88,7 +88,7 @@ class MyXmlErrorHandler : public QXmlErrorHandler
{
public:
MyXmlErrorHandler() : QXmlErrorHandler() {}
- QString errorString() const { return QString(); }
+ QString errorString() const { return QString(); }
bool error(const QXmlParseException &) { return false; }
bool fatalError(const QXmlParseException &) { return false; }
bool warning(const QXmlParseException &) { return false; }
@@ -193,7 +193,7 @@ void tst_QXml::interpretedAs0D() const
};
const QString document(QLatin1String("<element ") +
- QChar(0x010D) +
+ QChar(0x010D) +
QLatin1String("reated-by=\"an attr value\"/>"));
QString testFile = QFINDTESTDATA("0x010D.xml");
diff --git a/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp b/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp
index 2084c95cf4..b8837f8c14 100644
--- a/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp
+++ b/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp
@@ -72,7 +72,7 @@ private slots:
void tst_QXmlInputSource::reset() const
{
const QString input(QString::fromLatin1("<element attribute1='value1' attribute2='value2'/>"));
-
+
QXmlSimpleReader reader;
QXmlDefaultHandler handler;
reader.setContentHandler(&handler);
@@ -100,7 +100,7 @@ void tst_QXmlInputSource::reset() const
void tst_QXmlInputSource::resetSimplified() const
{
const QString input(QString::fromLatin1("<element/>"));
-
+
QXmlSimpleReader reader;
QXmlInputSource source;
diff --git a/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp
index 7c6c675fbe..c00a5c7caa 100644
--- a/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp
@@ -103,7 +103,7 @@ class ContentHandler : public QXmlDefaultHandler
const QString &result() const { return m_result; }
const QString &errorMsg() const { return m_error_msg; }
-
+
private:
QString nestPrefix() const { return QString().fill(' ', 3*m_nest); }
QString formatAttributes(const QXmlAttributes & atts);
diff --git a/tests/auto/xml/sax/sax.pro b/tests/auto/xml/sax/sax.pro
index 13aeb21d07..d232ee90e7 100644
--- a/tests/auto/xml/sax/sax.pro
+++ b/tests/auto/xml/sax/sax.pro
@@ -1,6 +1,8 @@
TEMPLATE=subdirs
SUBDIRS=\
- qxmlinputsource \
qxml \
+
+qtHaveModule(network): SUBDIRS += \
+ qxmlinputsource \
qxmlsimplereader \
diff --git a/tests/baselineserver/shared/lookup3.cpp b/tests/baselineserver/shared/lookup3.cpp
index b2d9ffeb94..2959356ca8 100644
--- a/tests/baselineserver/shared/lookup3.cpp
+++ b/tests/baselineserver/shared/lookup3.cpp
@@ -47,8 +47,8 @@ These functions are based on:
lookup3.c, by Bob Jenkins, May 2006, Public Domain.
These are functions for producing 32-bit hashes for hash table lookup.
-hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
-are externally useful functions. Routines to test the hash are included
+hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final()
+are externally useful functions. Routines to test the hash are included
if SELF_TEST is defined. You can use this free for any purpose. It's in
the public domain. It has no warranty.
@@ -56,7 +56,7 @@ You probably want to use hashlittle(). hashlittle() and hashbig()
hash byte arrays. hashlittle() is is faster than hashbig() on
little-endian machines. Intel and AMD are little-endian machines.
On second thought, you probably want hashlittle2(), which is identical to
-hashlittle() except it returns two 32-bit hashes for the price of one.
+hashlittle() except it returns two 32-bit hashes for the price of one.
You could implement hashbig2() if you wanted but I haven't bothered here.
If you want to find a hash of, say, exactly 7 integers, do
@@ -69,9 +69,9 @@ If you want to find a hash of, say, exactly 7 integers, do
then use c as the hash value. If you have a variable length array of
4-byte integers to hash, use hashword(). If you have a byte array (like
a character string), use hashlittle(). If you have several byte arrays, or
-a mix of things, see the comments above hashlittle().
+a mix of things, see the comments above hashlittle().
-Why is this so big? I read 12 bytes at a time into 3 4-byte integers,
+Why is this so big? I read 12 bytes at a time into 3 4-byte integers,
then mix those integers. This is fast (you can do a lot more thorough
mixing with 12*3 instructions on 3 integers than you can with 3 instructions
on 1 byte), but shoehorning those bytes into integers efficiently is messy.
@@ -110,7 +110,7 @@ This was tested for:
the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
is commonly produced by subtraction) look like a single 1-bit
difference.
-* the base values were pseudorandom, all zero but one bit set, or
+* the base values were pseudorandom, all zero but one bit set, or
all zero plus a counter that starts at zero.
Some k values for my "a-=c; a^=rot(c,k); c+=b;" arrangement that
@@ -120,7 +120,7 @@ satisfy this are
14 9 3 7 17 3
Well, "9 15 3 18 27 15" didn't quite get 32 bits diffing
for "differ" defined as + with a one-bit base and a two-bit delta. I
-used http://burtleburtle.net/bob/hash/avalanche.html to choose
+used http://burtleburtle.net/bob/hash/avalanche.html to choose
the operations, constants, and arrangements of the variables.
This does not achieve avalanche. There are input bits of (a,b,c)
@@ -159,7 +159,7 @@ produce values of c that look totally different. This was tested for
the output delta to a Gray code (a^(a>>1)) so a string of 1's (as
is commonly produced by subtraction) look like a single 1-bit
difference.
-* the base values were pseudorandom, all zero but one bit set, or
+* the base values were pseudorandom, all zero but one bit set, or
all zero plus a counter that starts at zero.
These constants passed:
@@ -218,7 +218,7 @@ quint32 initval) /* the previous hash, or an arbitrary value */
/*------------------------------------------- handle the last 3 quint32's */
switch(length) /* all the case statements fall through */
- {
+ {
case 3 : c+=k[2];
case 2 : b+=k[1];
case 1 : a+=k[0];
@@ -235,7 +235,7 @@ quint32 initval) /* the previous hash, or an arbitrary value */
--------------------------------------------------------------------
hashword2() -- same as hashword(), but take two seeds and return two
32-bit values. pc and pb must both be nonnull, and *pc and *pb must
-both be initialized with seeds. If you pass in (*pb)==0, the output
+both be initialized with seeds. If you pass in (*pb)==0, the output
(*pc) will be the same as the return value from hashword().
--------------------------------------------------------------------
*/
@@ -264,7 +264,7 @@ quint32 *pb) /* IN: more seed OUT: secondary hash value */
/*------------------------------------------- handle the last 3 quint32's */
switch(length) /* all the case statements fall through */
- {
+ {
case 3 : c+=k[2];
case 2 : b+=k[1];
case 1 : a+=k[0];
@@ -328,7 +328,7 @@ quint32 hashlittle( const void *key, size_t length, quint32 initval)
}
/*----------------------------- handle the last (probably partial) block */
- /*
+ /*
* "k[2]&0xffffff" actually reads beyond the end of the string, but
* then masks off the part it's not allowed to read. Because the
* string is aligned, the masked-off tail is in the same word as the
@@ -483,7 +483,7 @@ quint32 hashlittle( const void *key, size_t length, quint32 initval)
* the key. *pc is better mixed than *pb, so use *pc first. If you want
* a 64-bit value do something like "*pc + (((uint64_t)*pb)<<32)".
*/
-void hashlittle2(
+void hashlittle2(
const void *key, /* the key to hash */
size_t length, /* length of the key */
quint32 *pc, /* IN: primary initval, OUT: primary hash */
@@ -512,7 +512,7 @@ void hashlittle2(
}
/*----------------------------- handle the last (probably partial) block */
- /*
+ /*
* "k[2]&0xffffff" actually reads beyond the end of the string, but
* then masks off the part it's not allowed to read. Because the
* string is aligned, the masked-off tail is in the same word as the
@@ -662,7 +662,7 @@ void hashlittle2(
* hashbig():
* This is the same as hashword() on big-endian machines. It is different
* from hashlittle() on all machines. hashbig() takes advantage of
- * big-endian byte ordering.
+ * big-endian byte ordering.
*/
quint32 hashbig( const void *key, size_t length, quint32 initval)
{
@@ -688,7 +688,7 @@ quint32 hashbig( const void *key, size_t length, quint32 initval)
}
/*----------------------------- handle the last (probably partial) block */
- /*
+ /*
* "k[2]<<8" actually reads beyond the end of the string, but
* then shifts out the part it's not allowed to read. Because the
* string is aligned, the illegal read is in the same word as the
diff --git a/tests/benchmarks/README b/tests/benchmarks/README
index d437299fee..8d017cd9a7 100644
--- a/tests/benchmarks/README
+++ b/tests/benchmarks/README
@@ -2,7 +2,7 @@ The most reliable way of running benchmarks is to do it in an otherwise idle
system. On a busy system, the results will vary according to the other tasks
demanding attention in the system.
-We have managed to obtain quite reliable results by doing the following on
+We have managed to obtain quite reliable results by doing the following on
Linux (and you need root):
- switching the scheduler to a Real-Time mode
@@ -10,23 +10,23 @@ Linux (and you need root):
- disabling the other thread of the same core
This should work rather well for CPU-intensive tasks. A task that is in Real-
-Time mode will simply not be preempted by the OS. But if you make OS syscalls,
-especially I/O ones, your task will be de-scheduled. Note that this includes
-page faults, so if you can, make sure your benchmark's warmup code paths touch
+Time mode will simply not be preempted by the OS. But if you make OS syscalls,
+especially I/O ones, your task will be de-scheduled. Note that this includes
+page faults, so if you can, make sure your benchmark's warmup code paths touch
most of the data.
-To do this you need a tool called schedtool (package schedtool), from
+To do this you need a tool called schedtool (package schedtool), from
http://freequaos.host.sk/schedtool/
From this point on, we are using CPU0 for all tasks:
-If you have a Hyperthreaded multi-core processor (Core-i5 and Core-i7), you
-have to disable the other thread of the same core as CPU0. To discover which
+If you have a Hyperthreaded multi-core processor (Core-i5 and Core-i7), you
+have to disable the other thread of the same core as CPU0. To discover which
one it is:
$ cat /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
-This will print something like 0,4, meaning that CPUs 0 and 4 are sibling
+This will print something like 0,4, meaning that CPUs 0 and 4 are sibling
threads on the same core. So we'll turn CPU 4 off:
(as root)
@@ -34,7 +34,7 @@ threads on the same core. So we'll turn CPU 4 off:
To turn it back on, echo 1 into the same file.
-To run a task on CPU 0 exclusively, using FIFO RT priority 10, you run the
+To run a task on CPU 0 exclusively, using FIFO RT priority 10, you run the
following:
(as root)
@@ -43,38 +43,38 @@ following:
For example:
# schedtool -F -p 10 -a 1 -e ./tst_bench_qstring -tickcounter
-Warning: if your task livelocks or takes far too long to complete, your system
-may be unusable for a long time, especially if you don't have other cores to
+Warning: if your task livelocks or takes far too long to complete, your system
+may be unusable for a long time, especially if you don't have other cores to
run stuff on. To prevent that, run it before schedtool and time it.
-You can also limit the CPU time that the task is allowed to take. Run in the
+You can also limit the CPU time that the task is allowed to take. Run in the
same shell as you'll run schedtool:
$ ulimit -s 300
To limit to 300 seconds (5 minutes)
-If your task runs away, it will get a SIGXCPU after consuming 5 minutes of CPU
+If your task runs away, it will get a SIGXCPU after consuming 5 minutes of CPU
time (5 minutes running at 100%).
-If your app is multithreaded, you may want to give it more CPUs, like CPU0 and
+If your app is multithreaded, you may want to give it more CPUs, like CPU0 and
CPU1 with -a 3 (it's a bitmask).
-For best results, you should disable ALL other cores and threads of the same
-processor. The new Core-i7 have one processor with 4 cores,
-each core can run 2 threads; the older Mac Pros have two processors with 4
-cores each. So on those Mac Pros, you'd disable cores 1, 2 and 3, while on the
+For best results, you should disable ALL other cores and threads of the same
+processor. The new Core-i7 have one processor with 4 cores,
+each core can run 2 threads; the older Mac Pros have two processors with 4
+cores each. So on those Mac Pros, you'd disable cores 1, 2 and 3, while on the
Core-i7, you'll need to disable all other CPUs.
-However, disabling just the sibling thread seems to produce very reliable
-results for me already, with variance often below 0.5% (even though there are
+However, disabling just the sibling thread seems to produce very reliable
+results for me already, with variance often below 0.5% (even though there are
some measurable spikes).
Other things to try:
-Running the benchmark with highest priority, i.e. "sudo nice -19"
-usually produces stable results on some machines. If the benchmark also
-involves displaying something on the screen (on X11), running it with
-"-sync" is a must. Though, in that case the "real" cost is not correct,
+Running the benchmark with highest priority, i.e. "sudo nice -19"
+usually produces stable results on some machines. If the benchmark also
+involves displaying something on the screen (on X11), running it with
+"-sync" is a must. Though, in that case the "real" cost is not correct,
but it is useful to discover regressions.
Also; not many people know about ionice (1)
diff --git a/tests/benchmarks/benchmarks.pro b/tests/benchmarks/benchmarks.pro
index 5fd8ff6368..e5a6f5d7d2 100644
--- a/tests/benchmarks/benchmarks.pro
+++ b/tests/benchmarks/benchmarks.pro
@@ -2,11 +2,11 @@ TEMPLATE = subdirs
SUBDIRS = \
corelib \
gui \
- network \
sql \
# removed-by-refactor qtHaveModule(opengl): SUBDIRS += opengl
qtHaveModule(dbus): SUBDIRS += dbus
+qtHaveModule(network): SUBDIRS += network
check-trusted.CONFIG += recursive
QMAKE_EXTRA_TARGETS += check-trusted
diff --git a/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp b/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp
index 9a82711b84..37f52a3dce 100644
--- a/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp
+++ b/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp
@@ -123,14 +123,14 @@ private slots:
for (int i=0;i<1000;i++) {
if ((i % 10) == 0)
QVERIFY(fs.createDirectory(QString("%1/directory%2").arg(musicprefix).arg(i/10)));
- qint64 size = fs.createFileWithContent(QString("%1/directory%2/file%3").arg(musicprefix).arg(i/10).arg(i));
+ qint64 size = fs.createFileWithContent(QString("%1/directory%2/file%3").arg(musicprefix).arg(i/10).arg(i));
QVERIFY(size > 0);
musicsize += size;
}
//Use case: photos - 1000 files in 1 directory
QVERIFY(fs.createDirectory(photoprefix));
for (int i=0;i<1000;i++) {
- qint64 size = fs.createFileWithContent(QString("%1/file%2").arg(photoprefix).arg(i));
+ qint64 size = fs.createFileWithContent(QString("%1/file%2").arg(photoprefix).arg(i));
QVERIFY(size > 0);
photosize += size;
}
@@ -141,7 +141,7 @@ private slots:
QVERIFY(fs.createDirectory(QString("%1/directory%2").arg(sourceprefix).arg(i/100)));
if ((i % 10) == 0)
QVERIFY(fs.createDirectory(QString("%1/directory%2/subdirectory%3").arg(sourceprefix).arg(i/100).arg(i/10)));
- qint64 size = fs.createFileWithContent(QString("%1/directory%2/subdirectory%3/file%4").arg(sourceprefix).arg(i/100).arg(i/10).arg(i));
+ qint64 size = fs.createFileWithContent(QString("%1/directory%2/subdirectory%3/file%4").arg(sourceprefix).arg(i/100).arg(i/10).arg(i));
QVERIFY(size > 0);
sourcesize += size;
}
diff --git a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
index 598153e3ce..bb4a921fc7 100644
--- a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
+++ b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
@@ -368,7 +368,7 @@ bool QFileSystemIteratorPrivate::shouldFollowDirectory(const QFileInfo &fileInfo
// If we're doing flat iteration, we're done.
if (!(iteratorFlags & QFileSystemIterator::Subdirectories))
return false;
-
+
// Never follow non-directory entries
if (!fileInfo.isDir())
return false;
@@ -378,7 +378,7 @@ bool QFileSystemIteratorPrivate::shouldFollowDirectory(const QFileInfo &fileInfo
if (fileInfo.fileName() == QLatin1String(".") || fileInfo.fileName() == QLatin1String(".."))
return false;
-
+
// Check symlinks
if (fileInfo.isSymLink() && !(iteratorFlags & QFileSystemIterator::FollowSymlinks)) {
// Follow symlinks only if FollowSymlinks was passed
@@ -388,10 +388,10 @@ bool QFileSystemIteratorPrivate::shouldFollowDirectory(const QFileInfo &fileInfo
// Stop link loops
if (visitedLinks.contains(fileInfo.canonicalFilePath()))
return false;
-
+
return true;
}
-
+
/*!
\internal
@@ -454,7 +454,7 @@ bool QFileSystemIteratorPrivate::matchesFilters(const QAbstractFileEngineIterato
return false;
}
#endif
-
+
bool dotOrDotDot = (fileName == QLatin1String(".") || fileName == QLatin1String(".."));
if ((filters & QDir::NoDotAndDotDot) && dotOrDotDot)
return false;
@@ -495,7 +495,7 @@ bool QFileSystemIteratorPrivate::matchesFilters(const QAbstractFileEngineIterato
|| (!fi.exists() && fi.isSymLink()))) {
return false;
}
-
+
return true;
}
#endif
@@ -608,7 +608,7 @@ bool QFileSystemIterator::atEnd() const
This function is provided for the convenience when iterating single
directories. For recursive iteration, you should call filePath() or
fileInfo() instead.
-
+
\sa filePath(), fileInfo()
*/
QString QFileSystemIterator::fileName() const
diff --git a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
index 3c23a4d85b..d59678823d 100644
--- a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
+++ b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
@@ -44,8 +44,6 @@
#include <QtCore/qdir.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -93,6 +91,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QFileSystemIterator::IteratorFlags)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif
diff --git a/tests/benchmarks/corelib/io/qfile/main.cpp b/tests/benchmarks/corelib/io/qfile/main.cpp
index 4eb123f00c..ef5fd36254 100644
--- a/tests/benchmarks/corelib/io/qfile/main.cpp
+++ b/tests/benchmarks/corelib/io/qfile/main.cpp
@@ -184,9 +184,9 @@ void tst_qfile::readBigFile_QFSFileEngine()
QSKIP("This test requires -developer-build.");
#endif
}
-void tst_qfile::readBigFile_posix()
-{
- readBigFile();
+void tst_qfile::readBigFile_posix()
+{
+ readBigFile();
}
void tst_qfile::readBigFile_Win32() { readBigFile(); }
@@ -509,13 +509,13 @@ void tst_qfile::readSmallFiles_QFSFileEngine()
QSKIP("This test requires -developer-build.");
#endif
}
-void tst_qfile::readSmallFiles_posix()
+void tst_qfile::readSmallFiles_posix()
{
- readSmallFiles();
+ readSmallFiles();
}
-void tst_qfile::readSmallFiles_Win32()
-{
- readSmallFiles();
+void tst_qfile::readSmallFiles_Win32()
+{
+ readSmallFiles();
}
void tst_qfile::readSmallFiles_QFile_data()
diff --git a/tests/benchmarks/corelib/tools/containers-associative/main.cpp b/tests/benchmarks/corelib/tools/containers-associative/main.cpp
index e4511f4935..d2275ddb92 100644
--- a/tests/benchmarks/corelib/tools/containers-associative/main.cpp
+++ b/tests/benchmarks/corelib/tools/containers-associative/main.cpp
@@ -52,7 +52,7 @@ private slots:
void lookup();
};
-template <typename T>
+template <typename T>
void testInsert(int size)
{
T container;
@@ -69,7 +69,7 @@ void tst_associative_containers::insert_data()
QTest::addColumn<int>("size");
for (int size = 10; size < 20000; size += 100) {
-
+
const QByteArray sizeString = QByteArray::number(size);
QTest::newRow(QByteArray("hash--" + sizeString).constData()) << true << size;
@@ -86,9 +86,9 @@ void tst_associative_containers::insert()
QMap<int, int> testMap;
if (useHash) {
- testInsert<QHash<int, int> >(size);
+ testInsert<QHash<int, int> >(size);
} else {
- testInsert<QMap<int, int> >(size);
+ testInsert<QMap<int, int> >(size);
}
}
@@ -101,7 +101,7 @@ void tst_associative_containers::lookup_data()
QTest::addColumn<int>("size");
for (int size = 10; size < 20000; size += 100) {
-
+
const QByteArray sizeString = QByteArray::number(size);
QTest::newRow(QByteArray("hash--" + sizeString).constData()) << true << size;
@@ -109,11 +109,11 @@ void tst_associative_containers::lookup_data()
}
}
-template <typename T>
+template <typename T>
void testLookup(int size)
{
T container;
-
+
for (int i = 0; i < size; ++i)
container.insert(i, i);
@@ -122,7 +122,7 @@ void testLookup(int size)
QBENCHMARK {
for (int i = 0; i < size; ++i)
val = container.value(i);
-
+
}
}
diff --git a/tests/benchmarks/corelib/tools/qmap/main.cpp b/tests/benchmarks/corelib/tools/qmap/main.cpp
index e0bd994967..53b2a90fab 100644
--- a/tests/benchmarks/corelib/tools/qmap/main.cpp
+++ b/tests/benchmarks/corelib/tools/qmap/main.cpp
@@ -64,6 +64,14 @@ private slots:
void iterator_begin();
void ctorStdMap();
+
+ void insertion_int_intx();
+ void insertion_int_int_with_hint1();
+ void insertion_int_int2();
+ void insertion_int_int_with_hint2();
+
+ void insertion_string_int2();
+ void insertion_string_int2_hint();
};
@@ -76,6 +84,44 @@ void tst_QMap::insertion_int_int()
}
}
+void tst_QMap::insertion_int_intx()
+{
+ // This is the same test - but executed later.
+ // The results in the beginning of the test seems to be a somewhat inaccurate.
+ QMap<int, int> map;
+ QBENCHMARK {
+ for (int i = 0; i < 100000; ++i)
+ map.insert(i, i);
+ }
+}
+
+void tst_QMap::insertion_int_int_with_hint1()
+{
+ QMap<int, int> map;
+ QBENCHMARK {
+ for (int i = 0; i < 100000; ++i)
+ map.insert(map.constEnd(), i, i);
+ }
+}
+
+void tst_QMap::insertion_int_int2()
+{
+ QMap<int, int> map;
+ QBENCHMARK {
+ for (int i = 100000; i >= 0; --i)
+ map.insert(i, i);
+ }
+}
+
+void tst_QMap::insertion_int_int_with_hint2()
+{
+ QMap<int, int> map;
+ QBENCHMARK {
+ for (int i = 100000; i >= 0; --i)
+ map.insert(map.constBegin(), i, i);
+ }
+}
+
void tst_QMap::insertion_int_string()
{
QMap<int, QString> map;
@@ -203,6 +249,38 @@ void tst_QMap::ctorStdMap()
}
}
+class XString : public QString
+{
+public:
+ bool operator < (const XString& x) const // an expensive operator <
+ {
+ return toInt() < x.toInt();
+ }
+};
+
+void tst_QMap::insertion_string_int2()
+{
+ QMap<XString, int> map;
+ QBENCHMARK {
+ for (int i = 1; i < 5000; ++i) {
+ XString str;
+ str.setNum(i);
+ map.insert(str, i);
+ }
+ }
+}
+
+void tst_QMap::insertion_string_int2_hint()
+{
+ QMap<XString, int> map;
+ QBENCHMARK {
+ for (int i = 1; i < 5000; ++i) {
+ XString str;
+ str.setNum(i);
+ map.insert(map.end(), str, i);
+ }
+ }
+}
QTEST_MAIN(tst_QMap)
diff --git a/tests/benchmarks/corelib/tools/qregexp/main.cpp b/tests/benchmarks/corelib/tools/qregexp/main.cpp
index a34888ab13..3f8ebbecc5 100644
--- a/tests/benchmarks/corelib/tools/qregexp/main.cpp
+++ b/tests/benchmarks/corelib/tools/qregexp/main.cpp
@@ -139,13 +139,13 @@ void tst_qregexp::escape_data()
QTest::newRow("escape 0") << "Hello world" << "Hello world";
QTest::newRow("escape 1") << "(Hello world)" << "\\(Hello world\\)";
- {
+ {
QString s;
for (int i = 0; i < 10; ++i)
s += "(escape)";
QTest::newRow("escape 10") << s << QRegExp::escape(s);
}
- {
+ {
QString s;
for (int i = 0; i < 100; ++i)
s += "(escape)";
@@ -242,7 +242,7 @@ void tst_qregexp::escape_new2()
*quotedData = c;
++quotedData;
}
- quoted.resize(pattern.size() + escaped);
+ quoted.resize(pattern.size() + escaped);
verify(quoted, expected);
}
@@ -329,7 +329,7 @@ void tst_qregexp::escape_new4()
const QLatin1Char backslash('\\');
QString quoted(n * 2, backslash);
QChar *quotedData = quoted.data();
- for (int j = 0; j != i; ++j)
+ for (int j = 0; j != i; ++j)
*quotedData++ = *patternData++;
int escaped = 0;
for (; i != n; ++i) {
@@ -342,7 +342,7 @@ void tst_qregexp::escape_new4()
++quotedData;
++patternData;
}
- quoted.resize(n + escaped);
+ quoted.resize(n + escaped);
verify(quoted, expected);
// "return quoted"
}
diff --git a/tests/benchmarks/corelib/tools/qvector/main.cpp b/tests/benchmarks/corelib/tools/qvector/main.cpp
index 1795f2dc6f..f7325f7998 100644
--- a/tests/benchmarks/corelib/tools/qvector/main.cpp
+++ b/tests/benchmarks/corelib/tools/qvector/main.cpp
@@ -83,7 +83,7 @@ qvector_const_read_access:
xorl %eax, %eax
.L183:
! fldl s
-! faddl 16(%edx,%eax,8)
+! faddl 16(%edx,%eax,8)
! addl $1, %eax
! cmpl $10000, %eax
! fstpl s
@@ -206,6 +206,7 @@ private slots:
void qvector_separator() { qWarning() << "QVector results: "; }
void qvector_const_read_access();
void qvector_mutable_read_access();
+ void qvector_pop_back();
#ifdef TEST_RETURN
void qvector_fill_and_return();
#endif
@@ -214,6 +215,8 @@ private slots:
void stdvector() { qWarning() << "std::vector results: "; }
void stdvector_const_read_access();
void stdvector_mutable_read_access();
+ void stdvector_pop_back();
+
#ifdef TEST_RETURN
void stdvector_fill_and_return();
#endif
@@ -315,6 +318,24 @@ void tst_QVector::qrawvector_mutable_read_access()
}
}
+void tst_QVector::qvector_pop_back()
+{
+ const int c1 = 100000;
+ QVERIFY(N % c1 == 0);
+
+ QVector<int> v;
+ v.resize(N);
+
+ QBENCHMARK {
+ for (int i = 0; i < c1; ++i)
+ v.pop_back();
+ if (v.size() == 0)
+ v.resize(N);
+ }
+}
+
+
+
#ifdef TEST_RETURN
extern QVector<double> qrawvector_fill_and_return_helper();
@@ -356,6 +377,22 @@ void tst_QVector::stdvector_mutable_read_access()
}
}
+void tst_QVector::stdvector_pop_back()
+{
+ const int c1 = 100000;
+ QVERIFY(N % c1 == 0);
+
+ std::vector<int> v;
+ v.resize(N);
+
+ QBENCHMARK {
+ for (int i = 0; i < c1; ++i)
+ v.pop_back();
+ if (v.size() == 0)
+ v.resize(N);
+ }
+}
+
#ifdef TEST_RETURN
extern std::vector<double> stdvector_fill_and_return_helper();
diff --git a/tests/benchmarks/corelib/tools/qvector/qrawvector.h b/tests/benchmarks/corelib/tools/qvector/qrawvector.h
index 1bfc107d39..f358909eb1 100644
--- a/tests/benchmarks/corelib/tools/qvector/qrawvector.h
+++ b/tests/benchmarks/corelib/tools/qvector/qrawvector.h
@@ -55,8 +55,6 @@
#include <stdlib.h>
#include <string.h>
-QT_BEGIN_HEADER
-
QT_BEGIN_NAMESPACE
@@ -102,7 +100,7 @@ public:
static T *fromBase(void *d)
{ return (T*)((char*)d + offsetOfTypedData()); }
- inline QRawVector()
+ inline QRawVector()
{ m_begin = fromBase(0); m_alloc = m_size = 0; realloc(m_size, m_alloc, true); }
explicit QRawVector(int size);
QRawVector(int size, const T &t);
@@ -752,6 +750,4 @@ Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(RawVector)
QT_END_NAMESPACE
-QT_END_HEADER
-
#endif // QRAWVECTOR_H
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp
index 5e4b1e3a2f..e9204e3282 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp
@@ -259,7 +259,7 @@ void AbstractItemContainer::updateItemBuffer()
QModelIndex index;
if (m_items.count() > 0)
index = m_items.last()->modelIndex();
- while (m_items.count() < maxCount) {
+ while (m_items.count() < maxCount) {
index = m_itemView->nextIndex(index);
if (!index.isValid())
@@ -311,7 +311,7 @@ void AbstractItemContainer::insertItem(int pos, const QModelIndex &index)
item = m_prototype->newItemInstance();
if (item) {
- item->setModel(m_itemView->model());
+ item->setModel(m_itemView->model());
item->setModelIndex(index);
item->setTwoColumns(m_twoColumns);
m_items.insert(pos, item);
@@ -335,7 +335,7 @@ void AbstractItemContainer::findFirstAndLastVisibleBufferIndex(int &firstVisible
lastVisibleBufferIndex = -1;
int count = m_items.count();
- for (int i = 0; i < count; ++i) {
+ for (int i = 0; i < count; ++i) {
if (itemVisibleInView(m_items.at(i), viewRect, fullyVisible)) {
if (firstVisibleBufferIndex == -1)
firstVisibleBufferIndex = i;
@@ -359,13 +359,13 @@ int AbstractItemContainer::maxItemCountInItemBuffer() const
void AbstractItemContainer::themeChange()
{
- for (int i = 0; i <m_items.count(); ++i)
+ for (int i = 0; i <m_items.count(); ++i)
m_items.at(i)->themeChange();
}
-void AbstractItemContainer::updateContent()
+void AbstractItemContainer::updateContent()
{
- for (int i = 0; i <m_items.count(); ++i)
+ for (int i = 0; i <m_items.count(); ++i)
m_items.at(i)->updateItemContents();
}
@@ -389,7 +389,7 @@ void AbstractItemContainer::setTwoColumns(const bool enabled)
}
bool AbstractItemContainer::twoColumns()
-{
+{
return m_twoColumns;
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp
index 06fd5d9754..779b99a0c5 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp
@@ -63,8 +63,8 @@ AbstractItemView::~AbstractItemView()
/*virtual*/
void AbstractItemView::setModel(QAbstractItemModel *model, AbstractViewItem *prototype)
-{
- if( m_model == model || !model)
+{
+ if (m_model == model || !model)
return;
if (m_model) {
@@ -236,7 +236,7 @@ void AbstractItemView::currentIndexChanged(const QModelIndex &current, const QMo
/*virtual*/
void AbstractItemView::currentSelectionChanged(const QItemSelection &selected,
- const QItemSelection &deselected)
+ const QItemSelection &deselected)
{
Q_UNUSED(selected)
Q_UNUSED(deselected)
@@ -260,7 +260,6 @@ void AbstractItemView::rowsAboutToBeInserted(const QModelIndex &index, int start
// TODO implement
}
-
/*virtual*/
void AbstractItemView::rowsAboutToBeRemoved(const QModelIndex &index,int start, int end)
{
@@ -346,7 +345,7 @@ bool AbstractItemView::event(QEvent *e)
m_container->resize(this->size().width()-verticalScrollBar()->size().width(),
m_container->preferredHeight());
- if(verticalScrollBar()->sliderPosition() > verticalScrollBar()->sliderSize())
+ if (verticalScrollBar()->sliderPosition() > verticalScrollBar()->sliderSize())
verticalScrollBar()->setSliderPosition(verticalScrollBar()->sliderSize());
result = true;
@@ -371,7 +370,7 @@ void AbstractItemView::refreshContainerGeometry()
ScrollBar *sb = verticalScrollBar();
if (sb) {
- AbstractViewItem *item = m_container->itemAt(0);
+ AbstractViewItem *item = m_container->itemAt(0);
if (item) {
qreal oneItemH = item->size().height();
sb->setSliderSize(oneItemH*m_model->rowCount(m_rootIndex)-size().height());
@@ -394,10 +393,9 @@ void AbstractItemView::scrollContentsBy(qreal dx, qreal dy)
qreal itemH = 1;
AbstractViewItem *item = m_container->itemAt(0);
- if(item && item->size().height() > 1) {
+ if (item && item->size().height() > 1) {
itemH = item->size().height();
- }
- else if(item && item->preferredHeight() > 1) {
+ } else if (item && item->preferredHeight() > 1) {
itemH = item->preferredHeight();
}
@@ -407,8 +405,7 @@ void AbstractItemView::scrollContentsBy(qreal dx, qreal dy)
if ((vpy+m_container->size().height()-dy > pos().y()+size().height()) &&
(qAbs(dy) < itemH) && (vpy-dy <= 0)) {
m_container->setPos(vpx, vpy-dy);
- }
- else {
+ } else {
qreal vPos = verticalScrollBar()->sliderPosition();
int startRow = m_model->index(vPos/itemH, 0).row();
int itemsInContainer = m_container->itemCount();
@@ -428,13 +425,13 @@ void AbstractItemView::scrollContentsBy(qreal dx, qreal dy)
}
}
-void AbstractItemView::changeTheme()
+void AbstractItemView::changeTheme()
{
if (m_container)
m_container->themeChange();
}
-void AbstractItemView::updateViewContent()
+void AbstractItemView::updateViewContent()
{
if (m_container)
m_container->updateContent();
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp
index c904cb520b..bdd18e234f 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp
@@ -54,11 +54,11 @@ AbstractScrollArea::AbstractScrollArea(QGraphicsWidget *parent)
, m_prevVerticalValue(0.0)
{
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- setContentsMargins(0, 0, 0, 0);
+ setContentsMargins(0, 0, 0, 0);
m_horizontalScrollBar = new ScrollBar(Qt::Horizontal, this);
m_horizontalScrollBar->hide();
- m_horizontalScrollBar->setContentsMargins(0, 0, 0, 0);
+ m_horizontalScrollBar->setContentsMargins(0, 0, 0, 0);
m_horizontalScrollBarPolicy = Qt::ScrollBarAsNeeded;
m_horizontalScrollBar->setZValue(zValue()+1); // Raise scroll bar to top
m_horizontalScrollBar->setVisible(false);
@@ -70,7 +70,7 @@ AbstractScrollArea::AbstractScrollArea(QGraphicsWidget *parent)
m_verticalScrollBar = new ScrollBar(Qt::Vertical, this);
m_verticalScrollBar->hide();
- m_verticalScrollBar->setContentsMargins(0, 0, 0, 0);
+ m_verticalScrollBar->setContentsMargins(0, 0, 0, 0);
m_verticalScrollBarPolicy = Qt::ScrollBarAsNeeded;
m_verticalScrollBar->setZValue(zValue()+1); // Raise scroll bar to top
m_verticalScrollBar->setVisible(false);
@@ -153,8 +153,8 @@ bool AbstractScrollArea::event(QEvent *e)
{
if (e->type() == QEvent::ApplicationLayoutDirectionChange
|| e->type() == QEvent::LayoutDirectionChange) {
- } else if (e->type() == QEvent::GraphicsSceneResize) {
- QGraphicsSceneResizeEvent *event =
+ } else if (e->type() == QEvent::GraphicsSceneResize) {
+ QGraphicsSceneResizeEvent *event =
static_cast<QGraphicsSceneResizeEvent*>(e);
QSizeF newSize = event->newSize();
@@ -186,7 +186,7 @@ void AbstractScrollArea::scrollContentsBy(qreal dx, qreal dy)
void AbstractScrollArea::verticalScrollStart()
{
- m_prevVerticalValue = m_verticalScrollBar->sliderPosition();
+ m_prevVerticalValue = m_verticalScrollBar->sliderPosition();
}
void AbstractScrollArea::verticalScroll(qreal value)
@@ -200,7 +200,7 @@ void AbstractScrollArea::verticalScroll(qreal value)
void AbstractScrollArea::horizontalScrollStart()
{
- m_prevHorizontalValue = m_horizontalScrollBar->sliderPosition();
+ m_prevHorizontalValue = m_horizontalScrollBar->sliderPosition();
}
void AbstractScrollArea::horizontalScroll(qreal value)
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h
index 8f90277994..b4c32bf668 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h
@@ -90,8 +90,8 @@ private:
void adjustScrollBars();
QGraphicsWidget *m_viewport;
- ScrollBar *m_horizontalScrollBar;
- ScrollBar *m_verticalScrollBar;
+ ScrollBar *m_horizontalScrollBar;
+ ScrollBar *m_verticalScrollBar;
Qt::ScrollBarPolicy m_verticalScrollBarPolicy;
Qt::ScrollBarPolicy m_horizontalScrollBarPolicy;
qreal m_prevHorizontalValue;
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp
index 04626c4855..c4e10a36c6 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp
@@ -59,7 +59,6 @@ BackgroundItem::BackgroundItem(const QString &filename, QGraphicsWidget *parent)
BackgroundItem::~BackgroundItem()
{
-
}
void BackgroundItem::resizeEvent(QGraphicsSceneResizeEvent *event)
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h
index a637a50408..38a176e73d 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h
@@ -51,19 +51,19 @@ class QGraphicsWidget;
class BackgroundItem : public GvbWidget
{
Q_OBJECT
-
+
public:
BackgroundItem(const QString &filename, QGraphicsWidget *parent=0);
~BackgroundItem();
-
+
void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget = 0);
void resizeEvent(QGraphicsSceneResizeEvent *event);
-
+
public slots:
void themeChange();
-
+
private:
QPixmap m_background;
QString m_fileName;
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp
index 37d2318746..8ca4307c8b 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp
@@ -50,7 +50,7 @@ class ButtonPrivate {
public:
- ButtonPrivate(Button *button)
+ ButtonPrivate(Button *button)
: down(false)
, q_ptr(button)
{
@@ -65,7 +65,7 @@ public:
Button::Button(const QString &text, QGraphicsItem *parent, QSizeF minimumSize)
: QGraphicsWidget(parent)
, d_ptr(new ButtonPrivate(this)), m_background(), m_selected(false)
-{
+{
Q_D(Button);
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
//setCacheMode(QGraphicsItem::ItemCoordinateCache);
@@ -105,13 +105,13 @@ QString Button::text()
return d->textItem->text();
}
-void Button::paint(QPainter *painter,
- const QStyleOptionGraphicsItem *option,
+void Button::paint(QPainter *painter,
+ const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
Q_UNUSED(widget);
Q_UNUSED(option);
-
+
if(!m_background.isNull())
painter->drawPixmap(QPoint(), m_background);
if(m_selected) {
@@ -121,8 +121,8 @@ void Button::paint(QPainter *painter,
}
}
-QSizeF Button::sizeHint(Qt::SizeHint which,
- const QSizeF &constraint) const
+QSizeF Button::sizeHint(Qt::SizeHint which,
+ const QSizeF &constraint) const
{
Q_D(const Button);
@@ -146,7 +146,7 @@ QSizeF Button::sizeHint(Qt::SizeHint which,
void Button::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(Button);
-
+
if (event->button() != Qt::LeftButton ||
!sceneBoundingRect().contains(event->scenePos()))
return;
@@ -162,7 +162,7 @@ void Button::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(Button);
- if (!d->down || event->button() != Qt::LeftButton)
+ if (!d->down || event->button() != Qt::LeftButton)
return;
d->down = false;
@@ -184,11 +184,11 @@ void Button::resizeEvent(QGraphicsSceneResizeEvent *event)
{
Q_D(Button);
QGraphicsWidget::resizeEvent(event);
-
+
QRectF rect = d->textItem->boundingRect();
QRectF buttonrect = this->boundingRect();
d->textItem->setPos((buttonrect.width() - rect.width())/2, (buttonrect.height() - rect.height())/2 );
-
+
QSize currentSize = buttonrect.size().toSize();
if( m_background.size() != currentSize && (currentSize.width() > 0 && currentSize.height() > 0) ) {
m_background = Theme::p()->pixmap("status_field_middle.svg", buttonrect.size().toSize());
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h
index 14ffb15626..8641d8a9b6 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h
@@ -47,7 +47,7 @@
class ButtonPrivate;
class QTextDocument;
-class QPixmap;
+class QPixmap;
class QFont;
class Button : public QGraphicsWidget
@@ -73,7 +73,7 @@ public slots:
QString text();
public:
-
+
void setBackground(QPixmap& background);
bool isDown();
void select(bool select){m_selected = select;}
@@ -81,9 +81,9 @@ public:
private:
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget = 0);
- QSizeF sizeHint(Qt::SizeHint which,
+ QSizeF sizeHint(Qt::SizeHint which,
const QSizeF &constraint = QSizeF()) const;
void mousePressEvent(QGraphicsSceneMouseEvent *event);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp
index d98beefea6..06dea1b864 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp
@@ -127,7 +127,7 @@ bool readSettingsFromCommandLine(int argc, char *argv[],
argv[i] = 0;
i++;
argv[i] = 0;
- }
+ }
}
if (!argv[i])
@@ -160,7 +160,7 @@ bool readSettingsFromCommandLine(int argc, char *argv[],
argv[i] = 0;
i++;
argv[i] = 0;
- }
+ }
} else if (strcmp(argv[i], "-subtree-cache") == 0) {
options |= Settings::UseListItemCache;
argv[i] = 0;
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h
index 20d3706e9c..16525487da 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h
@@ -44,7 +44,7 @@
#include "settings.h"
-bool readSettingsFromCommandLine(int argc,
+bool readSettingsFromCommandLine(int argc,
char *argv[],
Settings& settings);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp
index 86fc78d3f7..259e94aa2f 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp
@@ -51,19 +51,19 @@ DummyDataGenerator::DummyDataGenerator() : m_isMale(false)
while (!countryCodeFile.atEnd()) {
m_countryCodes << QString(countryCodeFile.readLine()).remove("\n");
}
-
+
QFile firstNameFFile(":/contact/firstnamesF.txt");
firstNameFFile.open(QIODevice::ReadOnly);
while (!firstNameFFile.atEnd()) {
m_firstNamesF << QString(firstNameFFile.readLine()).remove("\n");
}
-
+
QFile firstNameMFile(":/contact/firstnamesM.txt");
firstNameMFile.open(QIODevice::ReadOnly);
while (!firstNameMFile.atEnd()) {
m_firstNamesM << QString(firstNameMFile.readLine()).remove("\n");
}
-
+
QFile lastNameFile(":/contact/lastnames.txt");
lastNameFile.open(QIODevice::ReadOnly);
while (!lastNameFile.atEnd()) {
@@ -74,7 +74,6 @@ DummyDataGenerator::DummyDataGenerator() : m_isMale(false)
DummyDataGenerator::~DummyDataGenerator()
{
-
}
void DummyDataGenerator::Reset()
@@ -89,7 +88,7 @@ QString DummyDataGenerator::randomPhoneNumber(QString indexNumber)
QString areaCode = QString::number(index) + QString("0").repeated(2-QString::number(index).length());
QString beginNumber = QString::number(555-index*2);
QString endNumber = QString("0").repeated(4-indexNumber.length()) + indexNumber;
-
+
return countryCode +" " + areaCode +" " + beginNumber +" " + endNumber;
}
@@ -116,14 +115,14 @@ QString DummyDataGenerator::randomIconItem()
QString avatar = Theme::p()->pixmapPath() + "contact_default_icon.svg";
if (qrand()%4) {
int randVal = 1+qrand()%25;
-
- if(m_isMale && randVal > 15) {
- randVal -= 15;
+
+ if (m_isMale && randVal > 15) {
+ randVal -= 15;
}
- if(!m_isMale && randVal <= 10) {
+ if (!m_isMale && randVal <= 10) {
randVal += 10;
}
-
+
avatar = QString(":/avatars/avatar_%1.png").arg(randVal, 3, 10, QChar('0'));
}
return avatar;
@@ -131,8 +130,7 @@ QString DummyDataGenerator::randomIconItem()
QString DummyDataGenerator::randomStatusItem()
{
- switch ( qrand()%3 )
- {
+ switch (qrand()%3) {
case 0: return Theme::p()->pixmapPath() + "contact_status_online.svg";
case 1: return Theme::p()->pixmapPath() + "contact_status_offline.svg";
case 2: return Theme::p()->pixmapPath() + "contact_status_idle.svg";
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h
index 5e64357919..9f418390f0 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h
@@ -51,7 +51,7 @@ class DummyDataGenerator : public QObject
public:
DummyDataGenerator();
~DummyDataGenerator();
-
+
public:
void Reset();
QString randomPhoneNumber(QString indexNumber);
@@ -60,7 +60,7 @@ public:
QString randomName();
QString randomIconItem();
QString randomStatusItem();
-
+
private:
QStringList m_countryCodes;
QStringList m_firstNamesF;
@@ -69,4 +69,4 @@ private:
bool m_isMale;
};
-#endif // __DUMMYDATAGEN_H__
+#endif // __DUMMYDATAGEN_H__
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
index 8348d429b5..5d23c55102 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
@@ -44,7 +44,7 @@
#include <QGraphicsWidget>
-class GvbWidget : public QGraphicsWidget
+class GvbWidget : public QGraphicsWidget
{
Q_OBJECT
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp
index 13713940c8..d68d7f799f 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp
@@ -45,7 +45,7 @@
#include "iconitem.h"
-IconItem::IconItem(const QString &filename, QGraphicsItem *parent)
+IconItem::IconItem(const QString &filename, QGraphicsItem *parent)
: GvbWidget(parent)
, m_filename(filename)
, m_rotation(0.0)
@@ -79,7 +79,7 @@ void IconItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
painter->drawPixmap(0,0, m_pixmap);
}
-QSizeF IconItem::sizeHint(Qt::SizeHint which,
+QSizeF IconItem::sizeHint(Qt::SizeHint which,
const QSizeF &constraint) const
{
switch (which)
@@ -144,7 +144,7 @@ void IconItem::setOpacityEffectEnabled(const bool enable)
gradient.setColorAt(0.0, QColor(0,0,0, 255));
gradient.setColorAt(0.46, QColor(0,0,0, 255));
gradient.setColorAt(0.62, QColor(0,0,0, 0));
-
+
m_opacityEffect = new QGraphicsOpacityEffect;
m_opacityEffect->setOpacityMask(gradient);
m_opacityEffect->setOpacity(1.0);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h
index 7d4510479b..9d1fb168de 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h
@@ -74,7 +74,7 @@ public:
private:
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget */*widget = 0*/);
- QSizeF sizeHint(Qt::SizeHint which,
+ QSizeF sizeHint(Qt::SizeHint which,
const QSizeF &constraint = QSizeF()) const;
private:
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp
index 1856d74500..fc6d5683ee 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp
@@ -52,7 +52,7 @@
ItemRecyclingList::ItemRecyclingList(const int itemBuffer, QGraphicsWidget * parent)
: ItemRecyclingListView(parent),
m_listModel(new ListModel(this))
-{
+{
ListItemContainer *container = new ListItemContainer(itemBuffer, this, this);
container->setParentItem(this);
ItemRecyclingListView::setContainer(container);
@@ -153,7 +153,7 @@ void ItemRecyclingList::themeChange()
item->setBackgroundBrush(Theme::p()->listItemBackgroundBrushEven());
item->setBackgroundOpacity(Theme::p()->listItemBackgroundOpacityEven());
}
-
+
// Update borders
item->setBorderPen(Theme::p()->listItemBorderPen());
item->setRounding(Theme::p()->listItemRounding());
@@ -177,7 +177,7 @@ void ItemRecyclingList::keyPressEvent(QKeyEvent *event)
static qreal step = 0.0;
static bool repeat = false;
int interval = keyPressInterval.elapsed();
-
+
ScrollBar* sb = verticalScrollBar();
qreal currentValue = sb->sliderPosition();
@@ -193,11 +193,11 @@ void ItemRecyclingList::keyPressEvent(QKeyEvent *event)
step = m_listModel->item(0)->size().height();
repeat = false;
}
-
+
if(event->key() == Qt::Key_Up ) { //Up Arrow
sb->setSliderPosition(currentValue - step);
}
-
+
if(event->key() == Qt::Key_Down ) { //Down Arrow
sb->setSliderPosition(currentValue + step);
}
@@ -255,7 +255,7 @@ void ItemRecyclingList::setTwoColumns(const bool enabled)
}
bool ItemRecyclingList::twoColumns()
-{
+{
return m_container->twoColumns();
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h
index f865740632..b86fe345f4 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h
@@ -59,7 +59,7 @@ public:
virtual ~ItemRecyclingList();
virtual void insertItem(int index, RecycledListItem *item);
- virtual void addItem(RecycledListItem *item);
+ virtual void addItem(RecycledListItem *item);
virtual void clear();
virtual AbstractViewItem *takeItem(const int row);
virtual void setItemPrototype(AbstractViewItem* prototype);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp
index bc45f11df0..847b55237d 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp
@@ -43,7 +43,7 @@
#include "label.h"
-Label::Label(const QString& text, QGraphicsItem *parent)
+Label::Label(const QString &text, QGraphicsItem *parent)
: GvbWidget(parent)
{
m_textItem = new QGraphicsSimpleTextItem(this);
@@ -58,8 +58,8 @@ Label::~Label()
{
}
-void Label::setText(const QString& text)
-{
+void Label::setText(const QString &text)
+{
m_textItem->setText(text);
prepareGeometryChange();
}
@@ -74,22 +74,20 @@ void Label::setFont(const QFont font)
m_textItem->setFont(font);
}
-void Label::resizeEvent(QGraphicsSceneResizeEvent *event)
+void Label::resizeEvent(QGraphicsSceneResizeEvent *event)
{
GvbWidget::resizeEvent(event);
}
QSizeF Label::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const
{
- switch (which)
- {
+ switch (which) {
case Qt::MinimumSize:
// fall thru
- case Qt::PreferredSize:
- {
+ case Qt::PreferredSize: {
QFontMetricsF fm(m_textItem->font());
return QSizeF(fm.width(m_textItem->text()), fm.height());
- }
+ }
default:
return GvbWidget::sizeHint(which, constraint);
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h
index e5c83ab3b0..74ffc39d37 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h
@@ -65,7 +65,7 @@ public:
private:
void resizeEvent(QGraphicsSceneResizeEvent *event);
- QSizeF sizeHint(Qt::SizeHint which,
+ QSizeF sizeHint(Qt::SizeHint which,
const QSizeF &constraint = QSizeF()) const;
private:
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp
index 27ce0a2919..222e4eea50 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp
@@ -64,25 +64,25 @@ struct ItemData
Q_DECLARE_METATYPE(ItemData);
ListItem::ListItem(QGraphicsWidget *parent)
- : GvbWidget(parent),
- m_txtlayout(new QGraphicsGridLayout()),
- m_layout(new QGraphicsLinearLayout(Qt::Horizontal)),
- m_liconlayout(new QGraphicsLinearLayout(Qt::Horizontal)),
- m_riconlayout(new QGraphicsLinearLayout(Qt::Horizontal))
- ,m_fonts()
- ,m_borderPen(Qt::NoPen)
- ,m_backgroundBrush(QBrush())
- ,m_backgroundOpacity(1.0)
- ,m_rounding(0.0, 0.0)
-{
+ : GvbWidget(parent)
+ , m_txtlayout(new QGraphicsGridLayout())
+ , m_layout(new QGraphicsLinearLayout(Qt::Horizontal))
+ , m_liconlayout(new QGraphicsLinearLayout(Qt::Horizontal))
+ , m_riconlayout(new QGraphicsLinearLayout(Qt::Horizontal))
+ , m_fonts()
+ , m_borderPen(Qt::NoPen)
+ , m_backgroundBrush(QBrush())
+ , m_backgroundOpacity(1.0)
+ , m_rounding(0.0, 0.0)
+{
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
setContentsMargins(0,4,4,0);
- m_layout->setContentsMargins(0,0,0,0);
+ m_layout->setContentsMargins(0,0,0,0);
m_txtlayout->setContentsMargins(0,8,0,8);
m_liconlayout->setContentsMargins(8,8,8,8);
m_riconlayout->setContentsMargins(0,8,4,8);
-
+
m_layout->insertItem(0, m_liconlayout);
m_layout->insertItem(1, m_txtlayout);
m_layout->insertItem(2, m_riconlayout);
@@ -95,47 +95,44 @@ ListItem::ListItem(QGraphicsWidget *parent)
setLayout(m_layout);
}
-ListItem::~ListItem()
+ListItem::~ListItem()
{
- if ( !m_liconlayout->parentLayoutItem() )
+ if (!m_liconlayout->parentLayoutItem())
delete m_liconlayout;
- if ( !m_riconlayout->parentLayoutItem() )
+ if (!m_riconlayout->parentLayoutItem())
delete m_riconlayout;
}
-void ListItem::setIcon( IconItem *iconItem, const IconItemPos iconPos )
+void ListItem::setIcon(IconItem *iconItem, const IconItemPos iconPos)
{
if (iconPos == LeftIcon) {
if (m_liconlayout->count() > 0 && m_liconlayout->itemAt(0)) {
delete m_liconlayout->itemAt(0);
- m_liconlayout->addItem( iconItem );
+ m_liconlayout->addItem(iconItem);
+ } else {
+ m_liconlayout->addItem(iconItem);
}
- else {
- m_liconlayout->addItem( iconItem );
- }
- m_liconlayout->itemAt(0)->setMaximumSize(58,58);
- }
- else if (iconPos == RightIcon) {
+ m_liconlayout->itemAt(0)->setMaximumSize(58, 58);
+ } else if (iconPos == RightIcon) {
if (m_riconlayout->count() > 0 && m_riconlayout->itemAt(0)) {
delete m_riconlayout->itemAt(0);
- m_riconlayout->addItem( iconItem );
+ m_riconlayout->addItem(iconItem);
+ } else {
+ m_riconlayout->addItem(iconItem);
}
- else {
- m_riconlayout->addItem( iconItem );
- }
- m_riconlayout->itemAt(0)->setMaximumSize(22,22);
+ m_riconlayout->itemAt(0)->setMaximumSize(22, 22);
}
m_layout->invalidate();
}
-IconItem* ListItem::icon( const IconItemPos iconPos ) const
+IconItem* ListItem::icon(const IconItemPos iconPos) const
{
QGraphicsLayoutItem* item = 0;
if (iconPos == LeftIcon && m_liconlayout->count() > 0) {
item = m_liconlayout->itemAt(0);
- }
+ }
else if (iconPos == RightIcon && m_riconlayout->count() > 0) {
item = m_riconlayout->itemAt(0);
}
@@ -203,13 +200,13 @@ void ListItem::setData(const QVariant &value, int role)
ItemData data = value.value<ItemData>();
QList<ListItem::TextPos> textkeys = data.texts.keys();
- for( int i = 0; i<textkeys.count(); ++i) {
- setText(data.texts[textkeys.at(i)],textkeys.at(i));
+ for (int i = 0; i<textkeys.count(); ++i) {
+ setText(data.texts[textkeys.at(i)], textkeys.at(i));
setFont(data.fonts[textkeys.at(i)], textkeys.at(i));
}
QList<ListItem::IconItemPos> iconkeys = data.icons.keys();
- for( int i = 0; i<iconkeys.count(); ++i) {
+ for (int i = 0; i<iconkeys.count(); ++i) {
IconItem *iconItem = icon(iconkeys.at(i));
if (iconItem)
iconItem->setFileName(data.icons[iconkeys.at(i)]);
@@ -249,8 +246,7 @@ void ListItem::setText(const QString str, const TextPos position)
m_txtlayout->addItem(label, position, 0);
if (m_fonts.contains(position))
label->setFont(m_fonts[position]);
- }
- else {
+ } else {
Label *titem = static_cast<Label *>(item);
titem->setText(str);
}
@@ -290,14 +286,12 @@ void ListItem::paint(QPainter *painter, const QStyleOptionGraphicsItem */*option
QRectF r = rect();
r.adjust(penWidth, penWidth, -penWidth, -penWidth);
- if (m_borderPen != Qt::NoPen)
- {
+ if (m_borderPen != Qt::NoPen) {
painter->setPen(m_borderPen);
painter->drawRoundedRect(r, m_rounding.width(), m_rounding.height());
}
- if (m_backgroundBrush != Qt::NoBrush)
- {
+ if (m_backgroundBrush != Qt::NoBrush) {
painter->setPen(Qt::NoPen);
painter->setBrush(m_backgroundBrush);
painter->setOpacity(m_backgroundOpacity);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp
index 451f1f8031..a1fa8df047 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp
@@ -53,7 +53,7 @@ ListItemCache::~ListItemCache()
QPixmapCache::remove(m_cacheKey);
}
-void ListItemCache::draw(QPainter * painter)
+void ListItemCache::draw(QPainter * painter)
{
QRectF irect = sourceBoundingRect(Qt::LogicalCoordinates);
QRectF vrect = painter->clipPath().boundingRect();
@@ -80,7 +80,7 @@ void ListItemCache::draw(QPainter * painter)
//qDebug() << "ListItemCache: blitting" << m_visibleRect;
painter->drawPixmap(0, 0, pixmap);
- }
+ }
}
void ListItemCache::sourceChanged(ChangeFlags)
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h
index a7b36c95c6..3e9153ce53 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h
@@ -45,7 +45,7 @@
#include <QGraphicsEffect>
#include <QPixmapCache>
-class ListItemCache : public QGraphicsEffect
+class ListItemCache : public QGraphicsEffect
{
Q_OBJECT
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp
index 0b787f077d..91dba0bc7d 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp
@@ -56,7 +56,7 @@ ListItemContainer::ListItemContainer(int bufferSize, ItemRecyclingList *view, QG
, m_layout(new QGraphicsLinearLayout(Qt::Vertical))
, m_listItemCaching(false)
{
- setContentsMargins(0,0,0,0);
+ setContentsMargins(0,0,0,0);
m_layout->setContentsMargins(0,0,0,0);
m_layout->setSpacing(0);
setLayout(m_layout);
@@ -80,13 +80,13 @@ bool ListItemContainer::listItemCaching() const
}
void ListItemContainer::setListItemCaching(const bool enabled)
-{
+{
if (m_listItemCaching == enabled)
return;
m_listItemCaching = enabled;
- const int itemCount = m_layout->count();
+ const int itemCount = m_layout->count();
for (int i = 0; i < itemCount; ++i)
setListItemCaching(enabled, i);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp
index 95eadeece1..f219402aca 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp
@@ -106,7 +106,7 @@ void ListModel::insert(int row, RecycledListItem *item)
{
if (item)
item->setModel(this);
- if (!item || m_items.contains(item) ) {
+ if (!item || m_items.contains(item) ) {
return;
}
if (row < 0)
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp
index 1cce930d09..1626e1c5d3 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp
@@ -47,14 +47,14 @@
ListWidget::ListWidget(QGraphicsWidget * parent)
: GvbWidget(parent),
- m_layout(new QGraphicsLinearLayout(Qt::Vertical)),
+ m_layout(new QGraphicsLinearLayout(Qt::Vertical)),
m_listView(new SimpleListView(this))
-{
+{
//listView->setViewport(listView->content());
//listView->content()->setParentItem(listView);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setContentsMargins(0,0,0,0);
- m_layout->setContentsMargins(0,0,0,0);
+ m_layout->setContentsMargins(0,0,0,0);
m_listView->setContentsMargins(0,0,0,0);
m_layout->addItem(m_listView);
setLayout(m_layout);
@@ -64,7 +64,7 @@ ListWidget::ListWidget(QGraphicsWidget * parent)
m_listView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
-ListWidget::~ListWidget()
+ListWidget::~ListWidget()
{
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp
index 57cff5f902..afd8581932 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp
@@ -82,7 +82,7 @@ MainView::~MainView()
}
void MainView::setTestWidget(QGraphicsWidget *testWidget)
-{
+{
if (!testWidget)
return;
@@ -99,7 +99,7 @@ void MainView::setTestWidget(QGraphicsWidget *testWidget)
QGraphicsWidget *MainView::takeTestWidget()
{
if (m_testWidget) {
- m_mainLayout->removeItem(m_testWidget);
+ m_mainLayout->removeItem(m_testWidget);
QGraphicsWidget *tmp = m_testWidget;
m_testWidget = 0;
return tmp;
@@ -229,30 +229,30 @@ void MainView::keyPressEvent(QKeyEvent *event)
else
showFullScreen();
}
-
+
//S60 3.x specific
if(m_menu->menuVisible()) {
m_menu->keyPressEvent(event);
return;
}
-
+
if(event->key() == 16777235 ) { //Up Arrow
GvbWidget* widget = qobject_cast<GvbWidget*>(m_testWidget);
if(widget)
widget->keyPressEvent(event);
}
-
+
if(event->key() == 16777237 ) { //Down Arrow
GvbWidget* widget = qobject_cast<GvbWidget*>(m_testWidget);
if(widget)
widget->keyPressEvent(event);
}
-
+
if(event->key() == 17825792 ) { //LSK
if(!m_menu->menuVisible())
m_menu->menuShowHide();
}
-
+
if(event->key() == 17825793 ) { //RSK
QApplication::quit();
}
@@ -265,7 +265,7 @@ void MainView::construct()
#ifndef QT_NO_OPENGL
if (m_enableOpenGL) {
qDebug() << "OpenGL enabled";
- m_scene->setSortCacheEnabled(false);
+ m_scene->setSortCacheEnabled(false);
setViewport(new QGLWidget);
// Qt doc says: This is the preferred update mode for
@@ -311,7 +311,7 @@ void MainView::construct()
m_mainLayout->addItem(m_topBar);
m_topBar->setZValue(1);
connect(m_topBar, SIGNAL(clicked(bool)), m_menu, SLOT(menuShowHide()));
-
+
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setContentsMargins(0,0,0,0);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h
index 3a484bd7d1..ee8625edce 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h
@@ -57,9 +57,9 @@ class BackgroundItem;
class TopBar;
class MainView : public QGraphicsView {
-
+
Q_OBJECT
-
+
public:
MainView(const bool enableOpenGL, const bool outputFps, const bool imageBasedRendering = false, QWidget *parent = 0);
~MainView();
@@ -94,7 +94,7 @@ private slots:
private:
void construct();
void resizeContent(const QSize &s);
-
+
private:
Q_DISABLE_COPY(MainView)
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp
index f8655bf725..540d7cf31b 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp
@@ -73,14 +73,14 @@ Menu::~Menu()
void Menu::init()
{
m_ButtonContainer = new QList<Button*>;
-
+
m_Layout->setContentsMargins(0,0,0,0);
m_Layout->setSpacing(0);
-
- setMinimumWidth(150);
-
+
+ setMinimumWidth(150);
+
setLayout(m_Layout);
-
+
connect(Theme::p(), SIGNAL(themeChanged()), this, SLOT(themeChange()));
}
@@ -124,9 +124,9 @@ void Menu::menuHide()
void Menu::themeChange()
{
- QPixmap pixmap = Theme::p()->pixmap("status_field_middle.svg",
+ QPixmap pixmap = Theme::p()->pixmap("status_field_middle.svg",
QSize(MinMenuItemWidth, MinMenuItemHeight));
-
+
for(int i = 0; i < m_ButtonContainer->count(); i++) {
Button* button = m_ButtonContainer->at(i);
button->setBackground(pixmap);
@@ -142,7 +142,7 @@ void Menu::keyPressEvent(QKeyEvent *event)
Button* button = m_ButtonContainer->at(m_currentSelectedIndex);
button->select(false);
button->update();
-
+
m_currentSelectedIndex--;
button = m_ButtonContainer->at(m_currentSelectedIndex);
button->select(true);
@@ -162,7 +162,7 @@ void Menu::keyPressEvent(QKeyEvent *event)
}
}
}
-
+
if(event->key() == 16777237 ) { //Down Arrow
if (m_currentSelectedIndex < m_ButtonContainer->count()-1) { //One step down
if(m_currentSelectedIndex >= 0) {
@@ -187,15 +187,15 @@ void Menu::keyPressEvent(QKeyEvent *event)
}
}
}
-
+
if(event->key() == 17825792 || event->key() == 16842752 || //LSK, center key or enter
- event->key() == 16777221 ) {
+ event->key() == 16777221 ) {
if(m_currentSelectedIndex >= 0) {
Button* button = m_ButtonContainer->at(m_currentSelectedIndex);
button->click();
}
}
-
+
if(event->key() == 17825793 ) { //RSK
menuShowHide();
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h
index 84a2e87100..564f6cee53 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h
@@ -66,12 +66,12 @@ public slots:
public slots:
void menuShowHide();
-
+
private:
void init();
void menuShow();
void menuHide();
-
+
private:
Q_DISABLE_COPY(Menu)
QGraphicsView* m_Parent;
@@ -81,4 +81,4 @@ private:
int m_currentSelectedIndex;
};
-#endif // __MENU_H__
+#endif // __MENU_H__
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp
index 9e487846a0..d73ec2f4ba 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp
@@ -57,7 +57,7 @@ RecycledListItem::RecycledListItem(QGraphicsWidget *parent)
{
m_item->setMinimumWidth(MinItemWidth);
setContentsMargins(0,0,0,0);
- setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_layout->addItem(m_item, 0, 0);
setLayout(m_layout);
m_layout->setContentsMargins(0,0,0,0);
@@ -118,7 +118,7 @@ void RecycledListItem::resizeEvent(QGraphicsSceneResizeEvent *event)
void RecycledListItem::updateItemContents()
{
- AbstractViewItem::updateItemContents();
+ AbstractViewItem::updateItemContents();
if (m_model && m_index.isValid())
setData(m_model->data(m_index,Qt::DisplayRole), Qt::DisplayRole);
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h
index cf301e434c..e8dd6292b1 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h
@@ -52,7 +52,7 @@ public:
int availableMemoryInAppThreadHeap;
qint64 availableMemoryInSystem;
qint64 totalMemoryInSystem;
- MemoryAllocation() :
+ MemoryAllocation() :
allocatedInAppThread(0),
numberOfAllocatedCellsInAppThread(0),
availableMemoryInAppThreadHeap(0),
@@ -60,17 +60,17 @@ public:
totalMemoryInSystem(0)
{}
};
-
+
struct CpuUsage
{
qreal systemUsage;
qreal appTreadUsage;
- CpuUsage() :
+ CpuUsage() :
systemUsage(0.0),
appTreadUsage(0.0)
{}
};
-
+
public:
virtual ~ResourceMonitorInterface() {}
@@ -78,17 +78,17 @@ public:
//for symbian, prepares the resource monitor for data capture, opens handle to ekern null
//thread and sets initial values
virtual bool Prepare(QString applicationThreadName) = 0;
-
+
//functions for CPU load and memory - Call Prepare before calling these
virtual CpuUsage CPULoad()=0;
virtual MemoryAllocation MemoryLoad()=0;
-
+
virtual void BeginMeasureMemoryLoad()=0;
virtual MemoryAllocation EndMeasureMemoryLoad()=0;
-
+
virtual void BeginMeasureCPULoad()=0;
virtual CpuUsage EndMeasureCPULoad()=0;
-
+
};
Q_DECLARE_INTERFACE(ResourceMonitorInterface,
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp
index e3c751dbca..2499c7094a 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp
@@ -52,7 +52,7 @@ class ScrollBarPrivate {
public:
- ScrollBarPrivate(Qt::Orientation orientation, ScrollBar *scrollBar)
+ ScrollBarPrivate(Qt::Orientation orientation, ScrollBar *scrollBar)
: orientation(orientation)
, sliderPosition(0.0)
, sliderSize(0.0)
@@ -96,15 +96,15 @@ public:
void updateSlider()
{
QRectF oldSlider = slider;
- slider = q_func()->boundingRect();
-
+ slider = q_func()->boundingRect();
+
qreal x = 0;
qreal y = 0;
qreal w = scrollerPixmap.width();
qreal h = scrollerPixmap.height();
-
+
//Adjust the scrollBar in relation to the scroller
-
+
if (orientation == Qt::Horizontal) {
qreal scrollBarHeight = scrollBarPixmap.height();
@@ -120,7 +120,7 @@ public:
}
slider.setWidth(scrollBarWidth);
}
-
+
if(oldSlider != slider && (slider.size().width() > 0 &&slider.size().height() > 0 )) {
scrollBarPixmap = Theme::p()->pixmap("scrollbar.svg", slider.size().toSize());
}
@@ -153,7 +153,7 @@ public:
ScrollBar::ScrollBar(Qt::Orientation orientation, QGraphicsWidget *parent)
: QGraphicsWidget(parent)
, d_ptr(new ScrollBarPrivate(orientation, this))
-{
+{
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding);
setContentsMargins(0, 0, 0, 0);
@@ -198,8 +198,8 @@ bool ScrollBar::sliderDown() const
return d->sliderDown;
}
-void ScrollBar::paint(QPainter *painter,
- const QStyleOptionGraphicsItem *option,
+void ScrollBar::paint(QPainter *painter,
+ const QStyleOptionGraphicsItem *option,
QWidget *widget)
{
Q_D(ScrollBar);
@@ -208,23 +208,23 @@ void ScrollBar::paint(QPainter *painter,
d->updateSlider();
- QRect sliderRect = d->slider.toRect();
+ QRect sliderRect = d->slider.toRect();
painter->drawPixmap(sliderRect.topLeft(), d->scrollBarPixmap);
-
+
QRect cursorRect = d->cursor.toRect();
painter->drawPixmap(cursorRect.topLeft(), d->scrollerPixmap);
}
-QSizeF ScrollBar::sizeHint(Qt::SizeHint which,
- const QSizeF &constraint) const
+QSizeF ScrollBar::sizeHint(Qt::SizeHint which,
+ const QSizeF &constraint) const
{
Q_D(const ScrollBar);
QSizeF s;
- if (d->orientation == Qt::Horizontal)
+ if (d->orientation == Qt::Horizontal)
s = QSizeF(-1, qMax(d->scrollBarPixmap.height(), d->scrollerPixmap.height()));
- else
+ else
s = QSizeF(qMax(d->scrollBarPixmap.width(), d->scrollerPixmap.width()), -1);
switch (which)
@@ -265,18 +265,18 @@ void ScrollBar::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
Q_D(ScrollBar);
- if (!d->sliderDown)
+ if (!d->sliderDown)
return;
if (d->orientation == Qt::Horizontal) {
qreal f = (event->pos().x() - d->pressPos.x())/(d->slider.width() - d->cursor.width());
qreal dx = f * d->sliderSize;
-
+
d->setSliderPosition(d->sliderPosition + dx);
} else {
qreal f = (event->pos().y() - d->pressPos.y())/(d->slider.height() - d->cursor.height());
qreal dy = f * d->sliderSize;
-
+
d->setSliderPosition(d->sliderPosition + dy);
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h
index 82e95046b7..9cb15b16c1 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h
@@ -77,11 +77,11 @@ public slots:
private:
- void paint(QPainter *painter,
- const QStyleOptionGraphicsItem *option,
+ void paint(QPainter *painter,
+ const QStyleOptionGraphicsItem *option,
QWidget *widget);
- QSizeF sizeHint(Qt::SizeHint which,
+ QSizeF sizeHint(Qt::SizeHint which,
const QSizeF &constraint = QSizeF()) const;
void mousePressEvent(QGraphicsSceneMouseEvent *event);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp
index 6fab34ca93..a30e03188f 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp
@@ -78,7 +78,7 @@ void ScrollerPrivate::stopScrolling()
m_scrollTimer.stop();
}
-//Maps screen coordinates to scrollArea coordinates though current m_eventViewport widget
+//Maps screen coordinates to scrollArea coordinates though current m_eventViewport widget
QPointF ScrollerPrivate::mapToScrollArea(const QPoint &point)
{
if (!m_scrollArea || !m_eventViewport)
@@ -106,7 +106,7 @@ bool ScrollerPrivate::eventFilter(QObject *obj, QEvent *event)
&& event->type() != QEvent::GraphicsSceneKeyReleased*/))
return false;
- QGraphicsSceneMouseEvent* mouseEvent =
+ QGraphicsSceneMouseEvent* mouseEvent =
static_cast<QGraphicsSceneMouseEvent*>(event);
m_eventViewport = mouseEvent->widget();
@@ -130,7 +130,7 @@ bool ScrollerPrivate::eventFilter(QObject *obj, QEvent *event)
m_cursorPos = QCursor::pos();
m_state = ManualScrolling;
- if (!m_scrollTimer.isActive())
+ if (!m_scrollTimer.isActive())
m_scrollTimer.start(UpdateScrollingInterval);
else {
m_scrollTimer.stop();
@@ -154,7 +154,7 @@ bool ScrollerPrivate::eventFilter(QObject *obj, QEvent *event)
ScrollBar *hscroll = m_scrollArea->horizontalScrollBar();
ScrollBar *vscroll = m_scrollArea->verticalScrollBar();
- QPointF d = m_scrollFactor * (mapToScrollArea(QCursor::pos()) - mapToScrollArea(m_cursorPos));
+ QPointF d = m_scrollFactor * (mapToScrollArea(QCursor::pos()) - mapToScrollArea(m_cursorPos));
hscroll->setSliderPosition(hscroll->sliderPosition() - d.x());
vscroll->setSliderPosition(vscroll->sliderPosition() - d.y());
@@ -249,7 +249,7 @@ void ScrollerPrivate::updateScrolling()
hscroll->setSliderPosition(hscroll->sliderPosition() - m_scrollFactor * d.x());
vscroll->setSliderPosition(vscroll->sliderPosition() - m_scrollFactor * d.y());
- } else {
+ } else {
m_state = Stopped;
scrollOngoing = false;
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h
index d84303fd8b..69e300517d 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h
@@ -76,7 +76,7 @@ public:
int resultFormat() const
{ return m_resultFormat; }
- void setResultFormat(int resultFormat)
+ void setResultFormat(int resultFormat)
{ m_resultFormat = resultFormat; }
const QSize& size() const
@@ -86,7 +86,7 @@ public:
int angle() const
{ return m_angle; }
- void setAngle(int angle)
+ void setAngle(int angle)
{ m_angle = angle; }
const Options& options() const
@@ -106,9 +106,9 @@ private:
QString m_outputFileName;
int m_resultFormat;
QSize m_size;
- int m_angle;
+ int m_angle;
int m_listItemCount;
- Options m_options;
+ Options m_options;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(Settings::Options)
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp
index 4d30286070..cc5df42a66 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp
@@ -60,8 +60,8 @@ SimpleList::SimpleList(QGraphicsWidget *parent)
}
/*virtual*/
-SimpleList::~SimpleList()
-{
+SimpleList::~SimpleList()
+{
}
void SimpleList::addItem(ListItem *item)
@@ -116,7 +116,7 @@ void SimpleList::keyPressEvent(QKeyEvent *event)
static qreal step = 0.0;
static bool repeat = false;
int interval = keyPressInterval.elapsed();
-
+
ScrollBar* sb = verticalScrollBar();
qreal currentValue = sb->sliderPosition();
@@ -132,11 +132,11 @@ void SimpleList::keyPressEvent(QKeyEvent *event)
step = itemAt(0)->size().height();
repeat = false;
}
-
+
if(event->key() == Qt::Key_Up ) { //Up Arrow
sb->setSliderPosition(currentValue - step);
}
-
+
if(event->key() == Qt::Key_Down ) { //Down Arrow
sb->setSliderPosition(currentValue + step);
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp
index 7bfda5173f..c59bd378e1 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp
@@ -55,7 +55,7 @@ class SimpleListViewPrivate
public:
- SimpleListViewPrivate(SimpleListView *button)
+ SimpleListViewPrivate(SimpleListView *button)
: m_content(0)
, m_layout(0)
, m_twoColumns(false)
@@ -100,7 +100,7 @@ public:
m_content->resize(q->viewport()->size().width(),
m_layout->preferredHeight());
- const bool clip =
+ const bool clip =
m_content->size().width() > q->viewport()->size().width()
|| m_content->size().height() > q->viewport()->size().height();
@@ -161,7 +161,7 @@ public:
const QString defaultIcon = Theme::p()->pixmapPath()+"contact_default_icon.svg";
const int itemCount = m_layout->count();
-
+
for (int i=0; i<itemCount; ++i) {
ListItem* item = static_cast<ListItem*>(m_layout->itemAt(i));
@@ -251,7 +251,7 @@ public:
QGraphicsLayoutItem *item = m_layout->itemAt(i);
m_layout->removeAt(i);
moveditems.append(item);
- }
+ }
for ( int i = 0; i < moveditems.count(); ++i)
m_layout->addItem(moveditems.at(i), i, 1);
@@ -267,7 +267,7 @@ public:
moveditems.append(m_layout->itemAt(i));
else
moveditems.insert(moveditems.begin(), m_layout->itemAt(i));
- m_layout->removeAt(i);
+ m_layout->removeAt(i);
}
for (int i = 0; i<moveditems.count(); ++i) {
m_layout->addItem(moveditems.at(i), m_layout->count(), 0);
@@ -292,17 +292,17 @@ public:
bool m_listItemCaching;
};
-SimpleListView::SimpleListView(QGraphicsWidget *parent)
+SimpleListView::SimpleListView(QGraphicsWidget *parent)
: AbstractScrollArea(parent)
, d_ptr(new SimpleListViewPrivate(this))
-{
+{
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setContentsMargins(0, 0, 0, 0);
verticalScrollBar()->hide();
horizontalScrollBar()->hide();
}
-SimpleListView::~SimpleListView()
+SimpleListView::~SimpleListView()
{
Q_D(SimpleListView);
@@ -403,7 +403,7 @@ bool SimpleListView::listItemCaching() const
void SimpleListView::setListItemCaching(bool enabled)
{
Q_D(SimpleListView);
-
+
if (d->m_listItemCaching == enabled)
return;
@@ -430,13 +430,13 @@ void SimpleListView::scrollContentsBy(qreal dx, qreal dy)
if (newy < miny)
newy = miny;
- else if (newy > 0)
+ else if (newy > 0)
newy = 0.0;
d->m_content->setPos(contentPos.x(), newy);
}
-void SimpleListView::resizeEvent(QGraphicsSceneResizeEvent *event)
+void SimpleListView::resizeEvent(QGraphicsSceneResizeEvent *event)
{
Q_D(SimpleListView);
@@ -446,7 +446,7 @@ void SimpleListView::resizeEvent(QGraphicsSceneResizeEvent *event)
}
QSizeF SimpleListView::sizeHint(Qt::SizeHint which, const QSizeF & constraint) const
-{
+{
Q_D(const SimpleListView);
if (which == Qt::PreferredSize)
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h
index 57ec90e717..fcc6805a2f 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h
@@ -79,7 +79,7 @@ protected:
virtual void scrollContentsBy(qreal dx, qreal dy);
void resizeEvent(QGraphicsSceneResizeEvent *event);
- QSizeF sizeHint(Qt::SizeHint which,
+ QSizeF sizeHint(Qt::SizeHint which,
const QSizeF & constraint) const;
private:
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp
index 136c7ed5ff..4983c574e1 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp
@@ -44,10 +44,10 @@
ThemeEvent::ThemeEvent( const QString &newTheme, Type type) : QEvent(type),
m_theme(newTheme)
{
-
+
}
ThemeEvent::~ThemeEvent()
{
-
+
}
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h
index eb94123b54..e48fb5f273 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h
@@ -55,7 +55,7 @@ public:
public:
inline QString getTheme() { return m_theme; }
-
+
private:
QString m_theme;
};
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp
index a7a4ad3a3f..9ff6d6d2f1 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp
@@ -55,7 +55,7 @@ TopBar::TopBar(QGraphicsView* mainView, QGraphicsWidget* parent) :
m_orientation(TopBar::None), m_topBarPixmap(), m_sizesBlue(), m_sizesLime()
{
setDefaultSizes();
-
+
m_titleFont = Theme::p()->font(Theme::TitleBar);
m_statusFont = Theme::p()->font(Theme::StatusBar);
@@ -71,7 +71,7 @@ void TopBar::resizeEvent(QGraphicsSceneResizeEvent* /*event*/)
//Check orientation
QString topbarName;
QSize mainViewSize = m_mainView->size();
- int rotationAngle = static_cast<MainView*>(m_mainView)->rotationAngle();
+ int rotationAngle = static_cast<MainView*>(m_mainView)->rotationAngle();
if(rotationAngle == 90 || rotationAngle == 270 ) {
int wd = mainViewSize.width();
int ht = mainViewSize.height();
@@ -91,49 +91,49 @@ void TopBar::resizeEvent(QGraphicsSceneResizeEvent* /*event*/)
m_orientation = TopBar::Landscape;
topbarName = "topbar_horisontal.svg";
}
-
+
//Calculate new size, resize by height, don't make it wider than the screen
- QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
+ QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
m_sizesBlue : m_sizesLime;
-
+
//Get current size for topbarpixmap
- QSize currentSize = !m_topBarPixmap.isNull() && !m_orientationChanged ?
+ QSize currentSize = !m_topBarPixmap.isNull() && !m_orientationChanged ?
m_topBarPixmap.size() : sizes[topbarName];
QSize newSize = !m_orientationChanged ? QSize(currentSize) : sizes[topbarName];
-
+
//Scale according to aspect ratio
newSize.scale(size().toSize(), Qt::KeepAspectRatio);
-
+
//fix width to window widht if previous scaling produced too narrow image
if(newSize.width() < size().width()) {
newSize.scale(size().toSize(), Qt::KeepAspectRatioByExpanding);
}
-
+
//Calculate scaling factor for rest of the graphics scaling
qreal scaleFactor = (newSize.width() *1.0) / (currentSize.width() * 1.0);
-
+
//Scale graphics, if the scalefactor applies
//This is really heavy since the SVG graphics are read again from the resource
if(scaleFactor != 1 || m_topBarPixmap.isNull() ) {
m_topBarPixmap = Theme::p()->pixmap(topbarName, newSize );
- m_topBarUserIcon = Theme::p()->pixmap("user_default_icon.svg",
+ m_topBarUserIcon = Theme::p()->pixmap("user_default_icon.svg",
!m_topBarUserIcon.isNull() && !m_orientationChanged ? m_topBarUserIcon.size()* scaleFactor : sizes["user_default_icon.svg"] * scaleFactor);
-
- m_topBarUserStatus = Theme::p()->pixmap("user_status_online.svg",
+
+ m_topBarUserStatus = Theme::p()->pixmap("user_status_online.svg",
!m_topBarUserStatus.isNull() && !m_orientationChanged ? m_topBarUserStatus.size() * scaleFactor : sizes["user_status_online.svg"] * scaleFactor);
-
- m_topBarStatusBarLeft = Theme::p()->pixmap("status_field_left.svg",
+
+ m_topBarStatusBarLeft = Theme::p()->pixmap("status_field_left.svg",
!m_topBarStatusBarLeft.isNull() && !m_orientationChanged ? m_topBarStatusBarLeft.size()* scaleFactor : sizes["status_field_left.svg"] * scaleFactor);
-
+
m_topBarStatusBarRight = Theme::p()->pixmap("status_field_right.svg",
!m_topBarStatusBarRight.isNull() && !m_orientationChanged ? m_topBarStatusBarRight.size()* scaleFactor : sizes["status_field_right.svg"] * scaleFactor);
-
+
m_topBarStatusBarMiddle = Theme::p()->pixmap("status_field_middle.svg",
!m_topBarStatusBarMiddle.isNull() && !m_orientationChanged ? m_topBarStatusBarMiddle.size() * scaleFactor : QSize(185, sizes["status_field_middle.svg"].height()) * scaleFactor);
-
+
//Update the sizeHint to match the size of the scaled m_topBarPixmap
updateGeometry();
-
+
//Point Update - Positions relative to the Top Bar "Backgroud" size.
//TODO: consider some layout instead of calculating relative locations
QSize topBarPixmapSize = m_topBarPixmap.size();
@@ -141,40 +141,40 @@ void TopBar::resizeEvent(QGraphicsSceneResizeEvent* /*event*/)
QSize topBarUserStatusSize = m_topBarUserStatus.size();
QSize topBarStatusBarLeftSize = m_topBarStatusBarLeft.size();
QSize topBarStatusBarMiddleSize = m_topBarStatusBarMiddle.size();
-
+
//Location for Title text 5% width, 35% height of the background pixmap
- m_topBarTitlePoint = QPoint(topBarPixmapSize.width()* 0.05,
+ m_topBarTitlePoint = QPoint(topBarPixmapSize.width()* 0.05,
topBarPixmapSize.height() * 0.35);
-
+
//User Icon location
//Placing 70% of the width and 10% of the height of the top bar background
m_topBarUserIconPoint = QPoint((topBarPixmapSize.width() * 0.7), (topBarPixmapSize.height() * 0.1));
-
+
//If Blue theme is in use - position user status icon on the right side of the user icon
if(!m_isLimeTheme) {
//Place the status icon on top of the right edge of the user icon, lower it by 35% of the height of the user icon
- m_topBarUserStatusPoint = QPoint( ( (m_topBarUserIconPoint.x()+topBarUserIconSize.width() ) -
- ( topBarUserStatusSize.width()/2 )),
+ m_topBarUserStatusPoint = QPoint( ( (m_topBarUserIconPoint.x()+topBarUserIconSize.width() ) -
+ ( topBarUserStatusSize.width()/2 )),
(m_topBarUserIconPoint.y() + (topBarUserIconSize.height() * 0.35 )));
}
//If Lime theme is in use - position user status icon on the left side of the user icon
else {
//Place the status icon on top of the left side of the user icon, lower it by 50% of the height of the user icon
//and move left by 5% of the icon
- m_topBarUserStatusPoint = QPoint( m_topBarUserIconPoint.x() + ( topBarUserIconSize.width() * 0.05),
+ m_topBarUserStatusPoint = QPoint( m_topBarUserIconPoint.x() + ( topBarUserIconSize.width() * 0.05),
(m_topBarUserIconPoint.y() + (topBarUserIconSize.height() * 0.5 )));
}
-
+
//Status bar
//Placing the left side of the status bar 5% of the width, 50% of the height of the top bar background
//Set the text baseline 80% of the height of the status bar
- m_topBarStatusBarLeftPoint = QPoint( (topBarPixmapSize.width()* 0.05),
+ m_topBarStatusBarLeftPoint = QPoint( (topBarPixmapSize.width()* 0.05),
(topBarPixmapSize.height() * 0.5));
- m_topBarStatusBarMiddlePoint = QPoint( (m_topBarStatusBarLeftPoint.x() + topBarStatusBarLeftSize.width()),
+ m_topBarStatusBarMiddlePoint = QPoint( (m_topBarStatusBarLeftPoint.x() + topBarStatusBarLeftSize.width()),
(m_topBarStatusBarLeftPoint.y()));
- m_topBarStatusBarRightPoint = QPoint( (m_topBarStatusBarMiddlePoint.x() + topBarStatusBarMiddleSize.width()),
+ m_topBarStatusBarRightPoint = QPoint( (m_topBarStatusBarMiddlePoint.x() + topBarStatusBarMiddleSize.width()),
(m_topBarStatusBarMiddlePoint.y() ) );
- m_topBarStatusBarTextPoint = QPoint(m_topBarStatusBarMiddlePoint.x(),
+ m_topBarStatusBarTextPoint = QPoint(m_topBarStatusBarMiddlePoint.x(),
m_topBarStatusBarMiddlePoint.y() + (topBarStatusBarMiddleSize.height()*0.8) );
} //if scalefactor
}
@@ -183,18 +183,18 @@ void TopBar::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, Q
{
//Topbar background
painter->drawPixmap(option->exposedRect, m_topBarPixmap, option->exposedRect);
-
+
//User Icon
painter->drawPixmap(m_topBarUserIconPoint, m_topBarUserIcon);
-
+
//User Status
painter->drawPixmap(m_topBarUserStatusPoint, m_topBarUserStatus);
-
+
//Status bar
painter->drawPixmap(m_topBarStatusBarLeftPoint, m_topBarStatusBarLeft);
painter->drawPixmap(m_topBarStatusBarMiddlePoint, m_topBarStatusBarMiddle);
painter->drawPixmap(m_topBarStatusBarRightPoint, m_topBarStatusBarRight);
-
+
//Title text
painter->save();
painter->setFont(m_titleFont);
@@ -210,14 +210,14 @@ void TopBar::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, Q
QRectF TopBar::boundingRect() const
{
- //It's possible that m_topBarPixmap is not allocated yet,
+ //It's possible that m_topBarPixmap is not allocated yet,
//in this case default size is used for setting boundingRect
- QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
- m_sizesBlue : m_sizesLime;
-
- if(!m_topBarPixmap.isNull())
+ QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
+ m_sizesBlue : m_sizesLime;
+
+ if (!m_topBarPixmap.isNull())
return QRectF(0, 0, m_topBarPixmap.size().width(), m_topBarPixmap.size().height());
- else
+ else
return QRectF(0, 0, sizes["topbar.svg"].width(), sizes["topbar.svg"].height());
}
@@ -227,95 +227,95 @@ void TopBar::themeChange()
m_statusFont = Theme::p()->font(Theme::StatusBar);
//Calculate the scaling factor
- QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
+ QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
m_sizesBlue : m_sizesLime;
-
- QString topbarString= m_orientation == TopBar::Portrait ?
+
+ QString topbarString= m_orientation == TopBar::Portrait ?
"topbar.svg" : "topbar_horisontal.svg";
-
+
QSize topBarSize = sizes[topbarString];
QSize newSize = QSize(topBarSize);
-
+
//Scale according to aspect ratio
newSize.scale(size().toSize(), Qt::KeepAspectRatio);
-
+
//fix width to window widht if previous scaling produced too narrow image
if(newSize.width() < size().width()) {
newSize.scale(size().toSize(), Qt::KeepAspectRatioByExpanding);
}
-
+
//Calculate scaling factor for rest of the graphics scaling
qreal scaleFactor = (newSize.width() *1.0) / (topBarSize.width() * 1.0);
//Background
m_topBarPixmap = Theme::p()->pixmap(topbarString, sizes[topbarString] * scaleFactor);
-
+
//User Icon
m_topBarUserIcon = Theme::p()->pixmap("user_default_icon.svg", sizes["user_default_icon.svg"] * scaleFactor);
-
+
//User Status
- m_topBarUserStatus = Theme::p()->pixmap("user_status_online.svg", sizes["user_status_online.svg"] * scaleFactor);
-
- //Status Bar
+ m_topBarUserStatus = Theme::p()->pixmap("user_status_online.svg", sizes["user_status_online.svg"] * scaleFactor);
+
+ //Status Bar
m_topBarStatusBarLeft = Theme::p()->pixmap("status_field_left.svg", sizes["status_field_left.svg"] * scaleFactor);
m_topBarStatusBarRight = Theme::p()->pixmap("status_field_right.svg", sizes["status_field_right.svg"] * scaleFactor);
- m_topBarStatusBarMiddle = Theme::p()->pixmap("status_field_middle.svg",
+ m_topBarStatusBarMiddle = Theme::p()->pixmap("status_field_middle.svg",
QSize(185, sizes["status_field_middle.svg"].height())* scaleFactor);
-
+
//Update Drawing points for Top Bar elements, points are relative to the top bar background size
QSize topBarPixmapSize = m_topBarPixmap.size();
QSize topBarUserIconSize = m_topBarUserIcon.size();
QSize topBarUserStatusSize = m_topBarUserStatus.size();
QSize topBarStatusBarLeftSize = m_topBarStatusBarLeft.size();
- QSize topBarStatusBarMiddleSize = m_topBarStatusBarMiddle.size();
-
+ QSize topBarStatusBarMiddleSize = m_topBarStatusBarMiddle.size();
+
//Theme Check
(Theme::p()->theme() == Theme::Lime) ? m_isLimeTheme = true : m_isLimeTheme = false;
-
+
//User Icon location
//Placing 70% of the width and 10% of the height of the top bar background
m_topBarUserIconPoint = QPoint((0.7*topBarPixmapSize.width()), (0.1*topBarPixmapSize.height()));
-
+
//If Blue theme is in use - position user status icon on the right side of the user icon
if(!m_isLimeTheme) {
//Place the status icon on top of the right edge of the user icon, lower it by 35% of the height of the user icon
- m_topBarUserStatusPoint = QPoint( ( (m_topBarUserIconPoint.x()+topBarUserIconSize.width() ) - ( topBarUserStatusSize.width()/2 )),
+ m_topBarUserStatusPoint = QPoint( ( (m_topBarUserIconPoint.x()+topBarUserIconSize.width() ) - ( topBarUserStatusSize.width()/2 )),
(m_topBarUserIconPoint.y() + (topBarUserIconSize.height() * 0.35 )));
}
//If Lime theme is in use - position user status icon on the left side of the user icon
else {
//Place the status icon on top of the left side of the user icon, lower it by 50% of the height of the user icon
//and move left by 5% of the icon
- m_topBarUserStatusPoint = QPoint( m_topBarUserIconPoint.x() + ( topBarUserIconSize.width() * 0.05),
+ m_topBarUserStatusPoint = QPoint( m_topBarUserIconPoint.x() + ( topBarUserIconSize.width() * 0.05),
(m_topBarUserIconPoint.y() + (topBarUserIconSize.height() * 0.5 )));
}
-
+
//Status bar
//Placing the left side of the status bar 5% of the width, 50% of the height of the top bar background
//Set the text baseline 80% of the height of the status bar
- m_topBarStatusBarLeftPoint = QPoint( (topBarPixmapSize.width()* 0.05),
+ m_topBarStatusBarLeftPoint = QPoint( (topBarPixmapSize.width()* 0.05),
(topBarPixmapSize.height() * 0.5));
- m_topBarStatusBarMiddlePoint = QPoint( (m_topBarStatusBarLeftPoint.x() + topBarStatusBarLeftSize.width()),
+ m_topBarStatusBarMiddlePoint = QPoint( (m_topBarStatusBarLeftPoint.x() + topBarStatusBarLeftSize.width()),
(m_topBarStatusBarLeftPoint.y()));
- m_topBarStatusBarRightPoint = QPoint( (m_topBarStatusBarMiddlePoint.x() + topBarStatusBarMiddleSize.width()),
+ m_topBarStatusBarRightPoint = QPoint( (m_topBarStatusBarMiddlePoint.x() + topBarStatusBarMiddleSize.width()),
(m_topBarStatusBarMiddlePoint.y() ) );
- m_topBarStatusBarTextPoint = QPoint(m_topBarStatusBarMiddlePoint.x(),
+ m_topBarStatusBarTextPoint = QPoint(m_topBarStatusBarMiddlePoint.x(),
m_topBarStatusBarMiddlePoint.y() + (topBarStatusBarMiddleSize.height()*0.8) );
-
+
update();
}
-QSizeF TopBar::sizeHint(Qt::SizeHint which,
- const QSizeF &constraint) const
+QSizeF TopBar::sizeHint(Qt::SizeHint which,
+ const QSizeF &constraint) const
{
- //It's possible that m_topBarPixmap is not allocated yet,
+ //It's possible that m_topBarPixmap is not allocated yet,
//in this case default size is used for setting size hint
- QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
- m_sizesBlue : m_sizesLime;
-
- int height = !m_topBarPixmap.isNull() ?
- m_topBarPixmap.height() : sizes["topbar.svg"].height();
-
+ QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
+ m_sizesBlue : m_sizesLime;
+
+ int height = !m_topBarPixmap.isNull() ?
+ m_topBarPixmap.height() : sizes["topbar.svg"].height();
+
switch (which)
{
case Qt::MinimumSize:
@@ -330,7 +330,7 @@ QSizeF TopBar::sizeHint(Qt::SizeHint which,
}
void TopBar::setDefaultSizes()
-{
+{
m_sizesBlue["topbar.svg"] = QSize(356,96);
m_sizesBlue["topbar_horisontal.svg"] = QSize(636,96);
m_sizesBlue["user_default_icon.svg"] = QSize(68,68);
@@ -338,7 +338,7 @@ void TopBar::setDefaultSizes()
m_sizesBlue["status_field_left.svg"] = QSize(14,24);
m_sizesBlue["status_field_right.svg"] = QSize(10,24);
m_sizesBlue["status_field_middle.svg"] = QSize(14,24);
-
+
m_sizesLime["topbar.svg"] = QSize(356,96);
m_sizesLime["topbar_horisontal.svg"] = QSize(636,96);
m_sizesLime["user_default_icon.svg"] = QSize(84,68);
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h
index dabffa9d06..808064d04d 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h
@@ -55,7 +55,7 @@ class QFont;
class TopBar : public GvbWidget
{
Q_OBJECT
-
+
public:
enum Orientation
{
@@ -63,33 +63,34 @@ public:
Landscape,
None
};
-
+
public:
TopBar(QGraphicsView* mainView, QGraphicsWidget* parent);
~TopBar();
-
+
public:
void paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0 );
QRectF boundingRect() const;
void resizeEvent(QGraphicsSceneResizeEvent *event);
- inline QPoint getStatusBarLocation() { return m_topBarStatusBarMiddlePoint +
- m_topBarStatusBarMiddle.rect().bottomLeft(); }
-
+ inline QPoint getStatusBarLocation()
+ {
+ return m_topBarStatusBarMiddlePoint + m_topBarStatusBarMiddle.rect().bottomLeft();
+ }
+
public slots:
void themeChange();
-
+
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event);
-
+
signals:
void clicked(bool checked = false);
-
+
private:
- QSizeF sizeHint(Qt::SizeHint which,
+ QSizeF sizeHint(Qt::SizeHint which,
const QSizeF &constraint = QSizeF()) const;
void setDefaultSizes();
-
-
+
private:
Q_DISABLE_COPY(TopBar)
@@ -100,7 +101,7 @@ private:
//Fonts
QFont m_titleFont;
QFont m_statusFont;
-
+
//Pixmaps
QPixmap m_topBarPixmap;
QPixmap m_topBarUserIcon;
@@ -108,7 +109,7 @@ private:
QPixmap m_topBarStatusBarLeft;
QPixmap m_topBarStatusBarRight;
QPixmap m_topBarStatusBarMiddle;
-
+
//Drawing points
QPoint m_topBarUserIconPoint;
QPoint m_topBarUserStatusPoint;
@@ -117,7 +118,7 @@ private:
QPoint m_topBarStatusBarMiddlePoint;
QPoint m_topBarStatusBarTextPoint;
QPoint m_topBarTitlePoint;
-
+
//Sizes
QHash<QString, QSize> m_sizesBlue;
QHash<QString, QSize> m_sizesLime;
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
index 0883580d70..4fee19230d 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
@@ -46,7 +46,7 @@
static const int MotionEndWaitTime = 2000;
static const int TileSideLength = 128;
-WebViewPrivate::WebViewPrivate(WebView *w)
+WebViewPrivate::WebViewPrivate(WebView *w)
: q(w)
, cache(0)
{
@@ -56,14 +56,14 @@ WebViewPrivate::WebViewPrivate(WebView *w)
web->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
web->page()->mainFrame()->setScrollBarPolicy(
- Qt::Horizontal, Qt::ScrollBarAlwaysOff);
+ Qt::Horizontal, Qt::ScrollBarAlwaysOff);
web->page()->mainFrame()->setScrollBarPolicy(
Qt::Vertical, Qt::ScrollBarAlwaysOff);
web->setZValue(3);
// cache = new WebViewCache(web);
// web->setGraphicsEffect(cache);
-
+
adjustSize();
}
@@ -85,9 +85,8 @@ void WebViewPrivate::adjustSize()
q->horizontalScrollBar()->setSliderSize(w);
else
q->horizontalScrollBar()->setSliderSize(0.0);
-
- if (h > q->viewport()->boundingRect().height())
+ if (h > q->viewport()->boundingRect().height())
q->verticalScrollBar()->setSliderSize(h);
else
q->verticalScrollBar()->setSliderSize(0.0);
@@ -116,7 +115,7 @@ void WebViewPrivate::_q_loadFinished(bool ok)
void WebViewPrivate::_q_viewportChanged(QGraphicsWidget* viewport)
{
web->setParentItem(viewport);
- viewport->setFlag(QGraphicsItem::ItemClipsChildrenToShape,
+ viewport->setFlag(QGraphicsItem::ItemClipsChildrenToShape,
true);
adjustSize();
}
@@ -131,7 +130,6 @@ void WebViewPrivate::_q_motionEnded()
WebViewCache::WebViewCache(QGraphicsWebView *webView)
: m_webView(webView)
{
-
}
WebViewCache::~WebViewCache()
@@ -178,8 +176,8 @@ void WebViewCache::draw(QPainter * painter, QGraphicsEffectSource * source)
for (int j = 0; j < tilesY; j++) {
int x = i * TileSideLength;
int y = j * TileSideLength;
-
- m_tileRects[i + j * tilesX]
+
+ m_tileRects[i + j * tilesX]
= QRectF(x, y, TileSideLength, TileSideLength);
}
}
@@ -205,13 +203,13 @@ void WebViewCache::draw(QPainter * painter, QGraphicsEffectSource * source)
QWebFrame *webFrame = m_webView->page()->mainFrame();
- QPainter tilePainter(&tilePixmap);
+ QPainter tilePainter(&tilePixmap);
tilePainter.translate(-m_tileRects[i].left(), -m_tileRects[i].top());
webFrame->render(&tilePainter, m_tileRects[i].toRect());
tilePainter.end();
m_tilePixmaps[i] = QPixmapCache::insert(tilePixmap);
- }
+ }
tileRect = tileRect.translated(-itemPos);
@@ -233,7 +231,7 @@ WebView::WebView(QGraphicsWidget *parent)
this, SLOT(_q_loadFinished(bool)));
connect(this, SIGNAL(viewportChanged(QGraphicsWidget*)),
this, SLOT(_q_viewportChanged(QGraphicsWidget*)));
- connect(&d->motionTimer, SIGNAL(timeout()),
+ connect(&d->motionTimer, SIGNAL(timeout()),
this, SLOT(_q_motionEnded()));
}
@@ -272,21 +270,21 @@ void WebView::scrollContentsBy(qreal dx, qreal dy)
if (x < minx)
x = minx;
- else if (x > 0)
+ else if (x > 0)
x = 0.0;
qreal y = d->web->pos().y() - dy;
if (y < miny)
y = miny;
- else if (y > 0)
+ else if (y > 0)
y = 0.0;
d->web->setPos(x, y);
}
QSizeF WebView::sizeHint(Qt::SizeHint which, const QSizeF & constraint) const
-{
+{
if (which == Qt::PreferredSize) {
QSizeF contentSize = d->web->page()->mainFrame()->contentsSize();
return contentSize;
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h
index ded7df7f60..a1391cc125 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h
@@ -71,7 +71,7 @@ public:
QTimer motionTimer;
};
-class WebViewCache : public QGraphicsEffect
+class WebViewCache : public QGraphicsEffect
{
Q_OBJECT
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
index 7394a9410e..e8b6388941 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
@@ -51,7 +51,7 @@ int main(int argc, char **argv)
app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
MainWindow window;
- window.show();
+ window.show();
return app.exec();
}
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
index ed3d74919d..74c1fedfac 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
@@ -55,7 +55,7 @@ class MainWindow : public QWidget
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
-
+
private:
void setupMatrix();
void populateScene();
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
index 3fac23ede0..db2f219222 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
@@ -71,7 +71,7 @@ private slots:
void rotateRight();
void timerEvent(QTimerEvent *);
-
+
private:
QGraphicsView *graphicsView;
QLabel *label;
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
index 711eb833f6..4e5b436f8d 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
@@ -62,7 +62,7 @@ public:
Translate
};
ChipTester(QWidget *parent = 0);
-
+
void setAntialias(bool enabled);
void setOpenGL(bool enabled);
void runBenchmark();
@@ -75,7 +75,7 @@ protected:
private:
void populateScene();
- QGraphicsView *view;
+ QGraphicsView *view;
QGraphicsScene *scene;
int npaints;
int timerId;
diff --git a/tests/benchmarks/gui/image/blendbench/main.cpp b/tests/benchmarks/gui/image/blendbench/main.cpp
index 1d8aa60394..3e912e83b3 100644
--- a/tests/benchmarks/gui/image/blendbench/main.cpp
+++ b/tests/benchmarks/gui/image/blendbench/main.cpp
@@ -100,7 +100,7 @@ QLatin1String brushTypes[] = {
class BlendBench : public QObject
{
Q_OBJECT
-private slots:
+private slots:
void blendBench_data();
void blendBench();
diff --git a/tests/benchmarks/gui/image/image.pro b/tests/benchmarks/gui/image/image.pro
index 2d5db35a73..71228f4499 100644
--- a/tests/benchmarks/gui/image/image.pro
+++ b/tests/benchmarks/gui/image/image.pro
@@ -6,5 +6,5 @@ SUBDIRS = \
qpixmap \
qpixmapcache
-!qtHaveModule(widgets): SUBDIRS -= \
+!qtHaveModule(widgets)|!qtHaveModule(network): SUBDIRS -= \
qimagereader
diff --git a/tests/benchmarks/gui/image/qimagereader/images/black.xpm b/tests/benchmarks/gui/image/qimagereader/images/black.xpm
index d7925bf211..4a1f4ec861 100644
--- a/tests/benchmarks/gui/image/qimagereader/images/black.xpm
+++ b/tests/benchmarks/gui/image/qimagereader/images/black.xpm
@@ -15,21 +15,21 @@ static char * ddd_xpm[] = {
"+ c white m white g white g4 white s Light ",
"* c DarkGreen m black g grey25 g4 grey25 s Eye ",
/* Pixels */
-" . . ",
-" . .. ",
-" . . ",
-" .. . ",
-" .. .. .. ",
-" .. . . . ",
-" . . . . .. ",
-" . .X. . ",
-" . *.X.* .. ",
-" .. .. .XXX. .. ... ",
-" . .X...XXX...X. . ",
-" .. ..XXX.XXX.XXX. .. ",
-" .....XXXX...XXXX. . ",
-" .. ..XXXXXXXXX.. .. ",
-" ...XXXXXXX..... ",
+" . . ",
+" . .. ",
+" . . ",
+" .. . ",
+" .. .. .. ",
+" .. . . . ",
+" . . . . .. ",
+" . .X. . ",
+" . *.X.* .. ",
+" .. .. .XXX. .. ... ",
+" . .X...XXX...X. . ",
+" .. ..XXX.XXX.XXX. .. ",
+" .....XXXX...XXXX. . ",
+" .. ..XXXXXXXXX.. .. ",
+" ...XXXXXXX..... ",
" ......... ",
" .XXXXXXX. ",
" .....XXX..... ",
diff --git a/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp b/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
index 07ee8b7804..c32ff0d099 100644
--- a/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
+++ b/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
@@ -174,7 +174,7 @@ void tst_QTableView::spanInit_helper(QTableView *view)
for (int i=0; i < 40; i++) {
view->setSpan(1+i%2, 1+4*i, 1+i%3, 2);
}
-
+
for (int i=1; i < 40; i++) {
view->setSpan(6 + i*7, 4, 4, 50);
}
@@ -185,7 +185,7 @@ void tst_QTableView::spanInit()
QtTestTableModel model(500, 500);
QTableView v;
v.setModel(&model);
-
+
QBENCHMARK {
spanInit_helper(&v);
}
@@ -196,7 +196,7 @@ void tst_QTableView::spanDraw()
QtTestTableModel model(500, 500);
QTableView v;
v.setModel(&model);
-
+
spanInit_helper(&v);
v.show();
v.resize(500,500);
@@ -214,11 +214,11 @@ void tst_QTableView::spanSelectAll()
QtTestTableModel model(500, 500);
QTableView v;
v.setModel(&model);
-
+
spanInit_helper(&v);
v.show();
QTest::qWait(30);
-
+
QBENCHMARK {
v.selectAll();
}
@@ -229,11 +229,11 @@ void tst_QTableView::spanSelectColumn()
QtTestTableModel model(500, 500);
QTableView v;
v.setModel(&model);
-
+
spanInit_helper(&v);
v.show();
QTest::qWait(30);
-
+
QBENCHMARK {
v.selectColumn(22);
}
diff --git a/tests/benchmarks/gui/painting/qtbench/benchmarktests.h b/tests/benchmarks/gui/painting/qtbench/benchmarktests.h
index 9c0e149ec5..0413290b21 100644
--- a/tests/benchmarks/gui/painting/qtbench/benchmarktests.h
+++ b/tests/benchmarks/gui/painting/qtbench/benchmarktests.h
@@ -487,7 +487,7 @@ public:
m_pixmaps.clear();
m_currentPixmap = 0;
QRect m_bounds = QRect(0,0,p->device()->width(), p->device()->height());
- switch (m_mode) {
+ switch (m_mode) {
case PainterMode:
m_size = (p->boundingRect(m_bounds, 0, m_text)).size();
// m_rect = m_rect.translated(-m_rect.topLeft());
diff --git a/tests/benchmarks/gui/text/qtext/main.cpp b/tests/benchmarks/gui/text/qtext/main.cpp
index 3a7d406777..e7e22f0e65 100644
--- a/tests/benchmarks/gui/text/qtext/main.cpp
+++ b/tests/benchmarks/gui/text/qtext/main.cpp
@@ -291,7 +291,7 @@ void tst_QText::fontResolution()
font.setFamily("DejaVu");
font2.setBold(true);
- QBENCHMARK {
+ QBENCHMARK {
QFont res = font.resolve(font2);
}
}
diff --git a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
index e653e8dffb..f62ce6bf5c 100644
--- a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -471,6 +471,10 @@ private slots:
void httpDownloadPerformanceDownloadBuffer_data();
void httpDownloadPerformanceDownloadBuffer();
void httpsRequestChain();
+ void httpsUpload();
+
+private:
+ void runHttpsUploadRequest(const QByteArray &data, const QNetworkRequest &request);
};
void tst_qnetworkreply::initTestCase()
@@ -825,6 +829,28 @@ void tst_qnetworkreply::httpsRequestChain()
}
+void tst_qnetworkreply::runHttpsUploadRequest(const QByteArray &data, const QNetworkRequest &request)
+{
+ QNetworkReply* reply = manager.post(request, data);
+ reply->ignoreSslErrors();
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(15);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ reply->deleteLater();
+}
+
+void tst_qnetworkreply::httpsUpload()
+{
+ QByteArray data = QByteArray(2*1024*1024+1, '\177');
+ QNetworkRequest request(QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi"));
+ request.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream");
+// for (int a = 0; a < 10; ++a)
+// runHttpsUploadRequest(data, request); // to warmup all TCP connections
+ QBENCHMARK {
+ runHttpsUploadRequest(data, request);
+ }
+}
QTEST_MAIN(tst_qnetworkreply)
diff --git a/tests/manual/bearerex/bearerex.cpp b/tests/manual/bearerex/bearerex.cpp
index 4417253930..185dbe123e 100644
--- a/tests/manual/bearerex/bearerex.cpp
+++ b/tests/manual/bearerex/bearerex.cpp
@@ -49,9 +49,9 @@ BearerEx::BearerEx(QWidget* parent)
: QMainWindow(parent)
{
setupUi(this);
-
+
createMenus();
-
+
connect(&m_NetworkConfigurationManager, SIGNAL(updateCompleted()), this, SLOT(configurationsUpdateCompleted()));
connect(&m_NetworkConfigurationManager, SIGNAL(configurationAdded(QNetworkConfiguration)),
this, SLOT(configurationAdded(QNetworkConfiguration)));
@@ -79,19 +79,19 @@ void BearerEx::showConfigurations()
{
listWidget->clear();
QListWidgetItem* listItem;
-
+
QNetworkConfiguration defaultConfig = m_NetworkConfigurationManager.defaultConfiguration();
if (defaultConfig.type() == QNetworkConfiguration::UserChoice) {
listItem = new QListWidgetItem();
QFont font = listItem->font();
font.setBold(true);
font.setUnderline(true);
- listItem->setFont(font);
+ listItem->setFont(font);
listItem->setText(" UserChoice");
listItem->setData(Qt::UserRole, QVariant::fromValue(defaultConfig));
listWidget->addItem(listItem);
}
-
+
QList<QNetworkConfiguration> configurations = m_NetworkConfigurationManager.allConfigurations();
for (int i=0; i<configurations.count(); i++)
{
@@ -102,7 +102,7 @@ void BearerEx::showConfigurations()
} else if (configurations[i].type() == QNetworkConfiguration::ServiceNetwork) {
text.append("(SNAP,");
}
-
+
if ((configurations[i].state() & QNetworkConfiguration::Active) == QNetworkConfiguration::Active) {
text.append("Act) ");
} else if ((configurations[i].state() & QNetworkConfiguration::Discovered) == QNetworkConfiguration::Discovered) {
@@ -111,12 +111,12 @@ void BearerEx::showConfigurations()
text.append("Def) ");
}
text.append(configurations[i].name());
-
+
if (defaultConfig.isValid() && defaultConfig == configurations[i]) {
QFont font = listItem->font();
font.setBold(true);
font.setUnderline(true);
- listItem->setFont(font);
+ listItem->setFont(font);
}
listItem->setText(text);
listItem->setData(Qt::UserRole, QVariant::fromValue(configurations[i]));
@@ -151,7 +151,7 @@ void BearerEx::on_createSessionButton_clicked()
QListWidgetItem* item = listWidget->currentItem();
if (!item) {
return;
- }
+ }
QNetworkConfiguration networkConfiguration = qvariant_cast<QNetworkConfiguration>(item->data(Qt::UserRole));
int newTabIndex = mainTabWidget->count();
SessionTab* newTab = new SessionTab(&networkConfiguration,&m_NetworkConfigurationManager,eventListWidget,newTabIndex-1);
@@ -184,7 +184,7 @@ void BearerEx::onlineStateChanged(bool isOnline)
QListWidgetItem* listItem = new QListWidgetItem();
QFont font = listItem->font();
font.setBold(true);
- listItem->setFont(font);
+ listItem->setFont(font);
if (isOnline) {
listItem->setText(QString("> Online"));
} else {
@@ -231,7 +231,7 @@ DetailedInfoDialog::DetailedInfoDialog(QNetworkConfiguration* apNetworkConfigura
tableWidget->setColumnCount(2);
int rowCount = 2;
-
+
if (apNetworkConfiguration->type() == QNetworkConfiguration::ServiceNetwork) {
rowCount = rowCount + apNetworkConfiguration->children().count();
}
@@ -274,7 +274,7 @@ SessionTab::SessionTab(QNetworkConfiguration* apNetworkConfiguration,
connect(m_NetworkSession, SIGNAL(opened()), this, SLOT(opened()));
connect(m_NetworkSession, SIGNAL(closed()), this, SLOT(closed()));
connect(m_NetworkSession, SIGNAL(error(QNetworkSession::SessionError)), this, SLOT(error(QNetworkSession::SessionError)));
-
+
if (apNetworkConfiguration->type() == QNetworkConfiguration::InternetAccessPoint) {
snapLabel->hide();
snapLineEdit->hide();
@@ -342,7 +342,7 @@ void SessionTab::on_openSessionButton_clicked()
{
m_NetworkSession->open();
if (m_NetworkSession->isOpen()) {
- newState(m_NetworkSession->state());
+ newState(m_NetworkSession->state());
}
}
@@ -350,7 +350,7 @@ void SessionTab::on_closeSessionButton_clicked()
{
m_NetworkSession->close();
if (!m_NetworkSession->isOpen()) {
- newState(m_NetworkSession->state());
+ newState(m_NetworkSession->state());
}
}
@@ -414,10 +414,10 @@ void SessionTab::opened()
QListWidgetItem* listItem = new QListWidgetItem();
QFont font = listItem->font();
font.setBold(true);
- listItem->setFont(font);
+ listItem->setFont(font);
listItem->setText(QString("S")+QString::number(m_index)+QString(" - ")+QString("Opened"));
m_eventListWidget->addItem(listItem);
-
+
QVariant identifier = m_NetworkSession->sessionProperty("ActiveConfiguration");
if (!identifier.isNull()) {
QString configId = identifier.toString();
@@ -445,7 +445,7 @@ void SessionTab::closed()
QListWidgetItem* listItem = new QListWidgetItem();
QFont font = listItem->font();
font.setBold(true);
- listItem->setFont(font);
+ listItem->setFont(font);
listItem->setText(QString("S")+QString::number(m_index)+QString(" - ")+QString("Closed"));
m_eventListWidget->addItem(listItem);
}
@@ -492,10 +492,10 @@ void SessionTab::on_dataObjectChanged(const QString &newObjectType)
}
-void SessionTab::stateChanged(QNetworkSession::State state)
+void SessionTab::stateChanged(QNetworkSession::State state)
{
newState(state);
-
+
QListWidgetItem* listItem = new QListWidgetItem();
listItem->setText(QString("S")+QString::number(m_index)+QString(" - ")+stateString(state));
m_eventListWidget->addItem(listItem);
@@ -527,7 +527,7 @@ void SessionTab::error(QNetworkSession::SessionError error)
QListWidgetItem* listItem = new QListWidgetItem();
QMessageBox msgBox;
msgBox.setStandardButtons(QMessageBox::Close);
-
+
QString errorString;
switch (error)
{
@@ -549,7 +549,7 @@ void SessionTab::error(QNetworkSession::SessionError error)
}
listItem->setText(QString("S")+QString::number(m_index)+QString(" - ")+errorString);
m_eventListWidget->addItem(listItem);
-
+
msgBox.setText(errorString);
msgBox.exec();
}
diff --git a/tests/manual/bearerex/bearerex.h b/tests/manual/bearerex/bearerex.h
index 5ec2e17060..8de2b1d41d 100644
--- a/tests/manual/bearerex/bearerex.h
+++ b/tests/manual/bearerex/bearerex.h
@@ -88,7 +88,7 @@ private Q_SLOTS:
void configurationAdded(const QNetworkConfiguration& config);
void configurationRemoved(const QNetworkConfiguration& config);
void onlineStateChanged(bool isOnline);
- void configurationChanged(const QNetworkConfiguration & config);
+ void configurationChanged(const QNetworkConfiguration & config);
private:
QNetworkConfigurationManager m_NetworkConfigurationManager;
@@ -112,8 +112,8 @@ public:
SessionTab(QNetworkConfiguration* apNetworkConfiguration = 0, QNetworkConfigurationManager* configManager = 0,
QListWidget* eventListWidget = 0, int index = 0, BearerEx* parent = 0);
~SessionTab();
-
- QString stateString(QNetworkSession::State state);
+
+ QString stateString(QNetworkSession::State state);
private Q_SLOTS:
void on_createQNetworkAccessManagerButton_clicked();
@@ -125,7 +125,7 @@ private Q_SLOTS:
void on_dataObjectChanged(const QString& newObjectType);
void on_alrButton_clicked();
void finished(quint32 errorCode, qint64 dataReceived, QString errorType);
-
+
void newConfigurationActivated();
void preferredConfigurationChanged(const QNetworkConfiguration& config, bool isSeamless);
void stateChanged(QNetworkSession::State state);
diff --git a/tests/manual/bearerex/xqlistwidget.cpp b/tests/manual/bearerex/xqlistwidget.cpp
index 556d9e400f..cb03f6e9bf 100644
--- a/tests/manual/bearerex/xqlistwidget.cpp
+++ b/tests/manual/bearerex/xqlistwidget.cpp
@@ -42,7 +42,7 @@
#include "xqlistwidget.h"
XQListWidget::XQListWidget(QWidget* parent) : QListWidget(parent)
-{
+{
}
void XQListWidget::keyPressEvent(QKeyEvent* event)
@@ -59,7 +59,7 @@ void XQListWidget::keyPressEvent(QKeyEvent* event)
focusNextChild();
break;
}
- default:
+ default:
{
QListWidget::keyPressEvent(event);
}
diff --git a/tests/manual/bearerex/xqlistwidget.h b/tests/manual/bearerex/xqlistwidget.h
index b23dfb5735..80aecceb0b 100644
--- a/tests/manual/bearerex/xqlistwidget.h
+++ b/tests/manual/bearerex/xqlistwidget.h
@@ -48,8 +48,8 @@
class XQListWidget: public QListWidget
{
public:
- XQListWidget(QWidget* parent = 0);
-
+ XQListWidget(QWidget* parent = 0);
+
protected:
void keyPressEvent(QKeyEvent* event);
};
diff --git a/tests/manual/dialogs/colordialogpanel.cpp b/tests/manual/dialogs/colordialogpanel.cpp
new file mode 100644
index 0000000000..695e37a4c7
--- /dev/null
+++ b/tests/manual/dialogs/colordialogpanel.cpp
@@ -0,0 +1,261 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 "colordialogpanel.h"
+
+#include <QGroupBox>
+#include <QCheckBox>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QMessageBox>
+#include <QSortFilterProxyModel>
+#include <QComboBox>
+#include <QTimer>
+#include <QDebug>
+
+// SVG color keyword names provided by the World Wide Web Consortium
+static inline QStringList svgColorNames()
+{
+ return QStringList()
+ << "aliceblue" << "antiquewhite" << "aqua" << "aquamarine" << "azure" << "beige" << "bisque"
+ << "black" << "blanchedalmond" << "blue" << "blueviolet" << "brown" << "burlywood" << "cadetblue"
+ << "chartreuse" << "chocolate" << "coral" << "cornflowerblue" << "cornsilk" << "crimson" << "cyan"
+ << "darkblue" << "darkcyan" << "darkgoldenrod" << "darkgray" << "darkgreen" << "darkgrey"
+ << "darkkhaki" << "darkmagenta" << "darkolivegreen" << "darkorange" << "darkorchid" << "darkred"
+ << "darksalmon" << "darkseagreen" << "darkslateblue" << "darkslategray" << "darkslategrey"
+ << "darkturquoise" << "darkviolet" << "deeppink" << "deepskyblue" << "dimgray" << "dimgrey"
+ << "dodgerblue" << "firebrick" << "floralwhite" << "forestgreen" << "fuchsia" << "gainsboro"
+ << "ghostwhite" << "gold" << "goldenrod" << "gray" << "grey" << "green" << "greenyellow"
+ << "honeydew" << "hotpink" << "indianred" << "indigo" << "ivory" << "khaki" << "lavender"
+ << "lavenderblush" << "lawngreen" << "lemonchiffon" << "lightblue" << "lightcoral" << "lightcyan"
+ << "lightgoldenrodyellow" << "lightgray" << "lightgreen" << "lightgrey" << "lightpink"
+ << "lightsalmon" << "lightseagreen" << "lightskyblue" << "lightslategray" << "lightslategrey"
+ << "lightsteelblue" << "lightyellow" << "lime" << "limegreen" << "linen" << "magenta"
+ << "maroon" << "mediumaquamarine" << "mediumblue" << "mediumorchid" << "mediumpurple"
+ << "mediumseagreen" << "mediumslateblue" << "mediumspringgreen" << "mediumturquoise"
+ << "mediumvioletred" << "midnightblue" << "mintcream" << "mistyrose" << "moccasin"
+ << "navajowhite" << "navy" << "oldlace" << "olive" << "olivedrab" << "orange" << "orangered"
+ << "orchid" << "palegoldenrod" << "palegreen" << "paleturquoise" << "palevioletred"
+ << "papayawhip" << "peachpuff" << "peru" << "pink" << "plum" << "powderblue" << "purple" << "red"
+ << "rosybrown" << "royalblue" << "saddlebrown" << "salmon" << "sandybrown" << "seagreen"
+ << "seashell" << "sienna" << "silver" << "skyblue" << "slateblue" << "slategray" << "slategrey"
+ << "snow" << "springgreen" << "steelblue" << "tan" << "teal" << "thistle" << "tomato"
+ << "turquoise" << "violet" << "wheat" << "white" << "whitesmoke" << "yellow" << "yellowgreen";
+}
+
+static inline QPushButton *addButton(const QString &description, QVBoxLayout *layout,
+ QObject *receiver, const char *slotFunc)
+{
+ QPushButton *button = new QPushButton(description);
+ QObject::connect(button, SIGNAL(clicked()), receiver, slotFunc);
+ layout->addWidget(button);
+ return button;
+}
+
+class ColorProxyModel : public QSortFilterProxyModel
+{
+public:
+ ColorProxyModel(QObject *parent = 0) : QSortFilterProxyModel(parent)
+ {
+ }
+
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const
+ {
+ if (role == Qt::DisplayRole) {
+ QString name = data(index, Qt::EditRole).toString();
+ return tr("%1 (%2)").arg(name, QColor(name).name());
+ }
+ if (role == Qt::DecorationRole)
+ return QColor(data(index, Qt::EditRole).toString());
+ return QSortFilterProxyModel::data(index, role);
+ }
+};
+
+ColorDialogPanel::ColorDialogPanel(QWidget *parent)
+ : QWidget(parent)
+ , m_colorComboBox(new QComboBox)
+ , m_showAlphaChannel(new QCheckBox(tr("Show alpha channel")))
+ , m_noButtons(new QCheckBox(tr("Don't display OK/Cancel buttons")))
+ , m_dontUseNativeDialog(new QCheckBox(tr("Don't use native dialog")))
+{
+ // Options
+ QGroupBox *optionsGroupBox = new QGroupBox(tr("Options"), this);
+ QVBoxLayout *optionsLayout = new QVBoxLayout(optionsGroupBox);
+ optionsLayout->addWidget(m_showAlphaChannel);
+ optionsLayout->addWidget(m_noButtons);
+ optionsLayout->addWidget(m_dontUseNativeDialog);
+
+ // Color
+ QGroupBox *colorGroupBox = new QGroupBox(tr("Color"), this);
+ QVBoxLayout *colorLayout = new QVBoxLayout(colorGroupBox);
+ colorLayout->addWidget(m_colorComboBox);
+ m_colorComboBox->addItems(svgColorNames());
+ m_colorComboBox->setEditable(true);
+
+ QAbstractItemModel *sourceModel = m_colorComboBox->model();
+ ColorProxyModel* proxyModel = new ColorProxyModel(m_colorComboBox);
+ proxyModel->setSourceModel(sourceModel);
+ sourceModel->setParent(proxyModel);
+ m_colorComboBox->setModel(proxyModel);
+
+ // Buttons
+ QGroupBox *buttonsGroupBox = new QGroupBox(tr("Show"));
+ QVBoxLayout *buttonsLayout = new QVBoxLayout(buttonsGroupBox);
+ addButton(tr("Exec modal"), buttonsLayout, this, SLOT(execModal()));
+ addButton(tr("Show modal"), buttonsLayout, this, SLOT(showModal()));
+ m_deleteModalDialogButton =
+ addButton(tr("Delete modal"), buttonsLayout, this, SLOT(deleteModalDialog()));
+ addButton(tr("Show non-modal"), buttonsLayout, this, SLOT(showNonModal()));
+ m_deleteNonModalDialogButton =
+ addButton(tr("Delete non-modal"), buttonsLayout, this, SLOT(deleteNonModalDialog()));
+ addButton(tr("Restore defaults"), buttonsLayout, this, SLOT(restoreDefaults()));
+ buttonsLayout->addStretch();
+
+ // Main layout
+ QHBoxLayout *mainLayout = new QHBoxLayout(this);
+ QVBoxLayout *leftLayout = new QVBoxLayout;
+ leftLayout->addWidget(optionsGroupBox);
+ leftLayout->addWidget(colorGroupBox);
+ leftLayout->addStretch();
+ mainLayout->addLayout(leftLayout);
+ mainLayout->addWidget(buttonsGroupBox);
+
+ enableDeleteModalDialogButton();
+ enableDeleteNonModalDialogButton();
+ restoreDefaults();
+}
+
+void ColorDialogPanel::execModal()
+{
+ QColorDialog dialog(this);
+ applySettings(&dialog);
+ connect(&dialog, SIGNAL(accepted()), this, SLOT(accepted()));
+ dialog.setWindowTitle(tr("Modal Color Dialog Qt %1").arg(QLatin1String(QT_VERSION_STR)));
+ dialog.exec();
+}
+
+void ColorDialogPanel::showModal()
+{
+ if (m_modalDialog.isNull()) {
+ static int n = 0;
+ m_modalDialog = new QColorDialog(this);
+ m_modalDialog->setModal(true);
+ connect(m_modalDialog.data(), SIGNAL(accepted()), this, SLOT(accepted()));
+ m_modalDialog->setWindowTitle(tr("Modal Color Dialog #%1 Qt %2")
+ .arg(++n)
+ .arg(QLatin1String(QT_VERSION_STR)));
+ enableDeleteModalDialogButton();
+ }
+ applySettings(m_modalDialog);
+ m_modalDialog->show();
+}
+
+void ColorDialogPanel::showNonModal()
+{
+ if (m_nonModalDialog.isNull()) {
+ static int n = 0;
+ m_nonModalDialog = new QColorDialog(this);
+ connect(m_nonModalDialog.data(), SIGNAL(accepted()), this, SLOT(accepted()));
+ m_nonModalDialog->setWindowTitle(tr("Non-Modal Color Dialog #%1 Qt %2")
+ .arg(++n)
+ .arg(QLatin1String(QT_VERSION_STR)));
+ enableDeleteNonModalDialogButton();
+ }
+ applySettings(m_nonModalDialog);
+ m_nonModalDialog->show();
+}
+
+void ColorDialogPanel::deleteNonModalDialog()
+{
+ if (!m_nonModalDialog.isNull())
+ delete m_nonModalDialog;
+ enableDeleteNonModalDialogButton();
+}
+
+void ColorDialogPanel::deleteModalDialog()
+{
+ if (!m_modalDialog.isNull())
+ delete m_modalDialog;
+ enableDeleteModalDialogButton();
+}
+
+void ColorDialogPanel::accepted()
+{
+ const QColorDialog *d = qobject_cast<const QColorDialog *>(sender());
+ Q_ASSERT(d);
+ m_result.clear();
+ QDebug(&m_result).nospace()
+ << "Current color: " << d->currentColor()
+ << "\nSelected color: " << d->selectedColor();
+ QTimer::singleShot(0, this, SLOT(showAcceptedResult())); // Avoid problems with the closing (modal) dialog as parent.
+}
+
+void ColorDialogPanel::showAcceptedResult()
+{
+ QMessageBox::information(this, tr("Color Dialog Accepted"), m_result, QMessageBox::Ok);
+}
+
+void ColorDialogPanel::restoreDefaults()
+{
+ QColorDialog d;
+ m_showAlphaChannel->setChecked(d.testOption(QColorDialog::ShowAlphaChannel));
+ m_noButtons->setChecked(d.testOption(QColorDialog::NoButtons));
+ m_dontUseNativeDialog->setChecked(d.testOption(QColorDialog::DontUseNativeDialog));
+}
+
+void ColorDialogPanel::enableDeleteNonModalDialogButton()
+{
+ m_deleteNonModalDialogButton->setEnabled(!m_nonModalDialog.isNull());
+}
+
+void ColorDialogPanel::enableDeleteModalDialogButton()
+{
+ m_deleteModalDialogButton->setEnabled(!m_modalDialog.isNull());
+}
+
+void ColorDialogPanel::applySettings(QColorDialog *d) const
+{
+ d->setOption(QColorDialog::ShowAlphaChannel, m_showAlphaChannel->isChecked());
+ d->setOption(QColorDialog::NoButtons, m_noButtons->isChecked());
+ d->setOption(QColorDialog::DontUseNativeDialog, m_dontUseNativeDialog->isChecked());
+ d->setCurrentColor(QColor(m_colorComboBox->itemData(m_colorComboBox->currentIndex(), Qt::EditRole).toString()));
+}
diff --git a/tests/manual/dialogs/colordialogpanel.h b/tests/manual/dialogs/colordialogpanel.h
new file mode 100644
index 0000000000..bcd2cf6e52
--- /dev/null
+++ b/tests/manual/dialogs/colordialogpanel.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 COLORDIALOGPANEL_H
+#define COLORDIALOGPANEL_H
+
+#include <QPointer>
+#include <QColorDialog>
+
+class QComboBox;
+class QCheckBox;
+class QPushButton;
+
+class ColorDialogPanel : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit ColorDialogPanel(QWidget *parent = 0);
+
+public slots:
+ void execModal();
+ void showModal();
+ void showNonModal();
+ void deleteNonModalDialog();
+ void deleteModalDialog();
+ void accepted();
+ void showAcceptedResult();
+ void restoreDefaults();
+
+private slots:
+ void enableDeleteNonModalDialogButton();
+ void enableDeleteModalDialogButton();
+
+private:
+ void applySettings(QColorDialog *d) const;
+
+ QComboBox *m_colorComboBox;
+ QCheckBox *m_showAlphaChannel;
+ QCheckBox *m_noButtons;
+ QCheckBox *m_dontUseNativeDialog;
+ QPushButton *m_deleteNonModalDialogButton;
+ QPushButton *m_deleteModalDialogButton;
+ QString m_result;
+ QPointer<QColorDialog> m_modalDialog;
+ QPointer<QColorDialog> m_nonModalDialog;
+};
+
+#endif // COLORDIALOGPANEL_H
diff --git a/tests/manual/dialogs/dialogs.pro b/tests/manual/dialogs/dialogs.pro
index ff916d3854..4ed200ab7f 100644
--- a/tests/manual/dialogs/dialogs.pro
+++ b/tests/manual/dialogs/dialogs.pro
@@ -4,5 +4,7 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = dialogs
TEMPLATE = app
-SOURCES += main.cpp filedialogpanel.cpp
-HEADERS += filedialogpanel.h
+SOURCES += main.cpp filedialogpanel.cpp colordialogpanel.cpp fontdialogpanel.cpp \
+ wizardpanel.cpp
+HEADERS += filedialogpanel.h colordialogpanel.h fontdialogpanel.h \
+ wizardpanel.h
diff --git a/tests/manual/dialogs/filedialogpanel.cpp b/tests/manual/dialogs/filedialogpanel.cpp
index 66a5201db0..636e65b684 100644
--- a/tests/manual/dialogs/filedialogpanel.cpp
+++ b/tests/manual/dialogs/filedialogpanel.cpp
@@ -44,6 +44,7 @@
#include <QGridLayout>
#include <QVBoxLayout>
#include <QHBoxLayout>
+#include <QGridLayout>
#include <QFormLayout>
#include <QSpacerItem>
#include <QGroupBox>
@@ -105,11 +106,13 @@ inline void setComboBoxValue(QComboBox *c, int v)
c->setCurrentIndex(c->findData(QVariant(v)));
}
-static inline void addButton(const QString &description, QBoxLayout *layout, QObject *receiver, const char *slotFunc)
+static inline QPushButton *addButton(const QString &description, QGridLayout *layout,
+ int &row, int column, QObject *receiver, const char *slotFunc)
{
QPushButton *button = new QPushButton(description);
QObject::connect(button, SIGNAL(clicked()), receiver, slotFunc);
- layout->addWidget(button);
+ layout->addWidget(button, row++, column);
+ return button;
}
// A line edit for editing the label fields of the dialog, keeping track of whether it has
@@ -159,6 +162,8 @@ FileDialogPanel::FileDialogPanel(QWidget *parent)
, m_selectedFileName(new QLineEdit(this))
, m_nameFilters(new QPlainTextEdit)
, m_selectedNameFilter(new QLineEdit(this))
+ , m_deleteNonModalDialogButton(0)
+ , m_deleteModalDialogButton(0)
{
// Options
QGroupBox *optionsGroupBox = new QGroupBox(tr("Options"));
@@ -197,19 +202,24 @@ FileDialogPanel::FileDialogPanel(QWidget *parent)
labelsLayout->addRow(tr("Reject label:"), m_labelLineEdits.back());
// Buttons
- QVBoxLayout *buttonLayout = new QVBoxLayout;
- buttonLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding));
- addButton(tr("Show modal"), buttonLayout, this, SLOT(showModal()));
- addButton(tr("Show non-modal"), buttonLayout, this, SLOT(showNonModal()));
- addButton(tr("getOpenFileName"), buttonLayout, this, SLOT(getOpenFileName()));
- addButton(tr("getOpenFileNames"), buttonLayout, this, SLOT(getOpenFileNames()));
- addButton(tr("getSaveFileName"), buttonLayout, this, SLOT(getSaveFileName()));
- addButton(tr("getExistingDirectory"), buttonLayout, this, SLOT(getExistingDirectory()));
- addButton(tr("Restore defaults"), buttonLayout, this, SLOT(restoreDefaults()));
QGroupBox *buttonsGroupBox = new QGroupBox(tr("Show"));
- QHBoxLayout *buttonsGroupLayout = new QHBoxLayout(buttonsGroupBox);
- buttonsGroupLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Ignored));
- buttonsGroupLayout->addLayout(buttonLayout);
+ QGridLayout *buttonLayout = new QGridLayout(buttonsGroupBox);
+ int row = 0;
+ int column = 0;
+ addButton(tr("Exec modal"), buttonLayout, row, column, this, SLOT(execModal()));
+ addButton(tr("Show modal"), buttonLayout, row, column, this, SLOT(showModal()));
+ m_deleteModalDialogButton =
+ addButton(tr("Delete modal"), buttonLayout, row, column, this, SLOT(deleteModalDialog()));
+ addButton(tr("Show non-modal"), buttonLayout, row, column, this, SLOT(showNonModal()));
+ m_deleteNonModalDialogButton =
+ addButton(tr("Delete non-modal"), buttonLayout, row, column, this, SLOT(deleteNonModalDialog()));
+ row = 0;
+ column++;
+ addButton(tr("getOpenFileName"), buttonLayout, row, column, this, SLOT(getOpenFileName()));
+ addButton(tr("getOpenFileNames"), buttonLayout, row, column, this, SLOT(getOpenFileNames()));
+ addButton(tr("getSaveFileName"), buttonLayout, row, column, this, SLOT(getSaveFileName()));
+ addButton(tr("getExistingDirectory"), buttonLayout, row, column, this, SLOT(getExistingDirectory()));
+ addButton(tr("Restore defaults"), buttonLayout, row, column, this, SLOT(restoreDefaults()));
// Main layout
QGridLayout *gridLayout = new QGridLayout(this);
@@ -218,26 +228,76 @@ FileDialogPanel::FileDialogPanel(QWidget *parent)
gridLayout->addWidget(labelsGroupBox, 1, 0);
gridLayout->addWidget(buttonsGroupBox, 1, 1);
+ enableDeleteModalDialogButton();
+ enableDeleteNonModalDialogButton();
restoreDefaults();
}
-void FileDialogPanel::showModal()
+void FileDialogPanel::execModal()
{
QFileDialog dialog(this);
applySettings(&dialog);
+ connect(&dialog, SIGNAL(accepted()), this, SLOT(accepted()));
dialog.setWindowTitle(tr("Modal File Dialog Qt %1").arg(QLatin1String(QT_VERSION_STR)));
dialog.exec();
}
+void FileDialogPanel::showModal()
+{
+ if (m_modalDialog.isNull()) {
+ static int n = 0;
+ m_modalDialog = new QFileDialog(this);
+ m_modalDialog->setModal(true);
+ connect(m_modalDialog.data(), SIGNAL(accepted()), this, SLOT(accepted()));
+ m_modalDialog->setWindowTitle(tr("Modal File Dialog #%1 Qt %2")
+ .arg(++n)
+ .arg(QLatin1String(QT_VERSION_STR)));
+ enableDeleteModalDialogButton();
+ }
+ applySettings(m_modalDialog);
+ m_modalDialog->show();
+}
+
void FileDialogPanel::showNonModal()
{
- QFileDialog *dialog = new QFileDialog(this);
- dialog->setAttribute(Qt::WA_DeleteOnClose);
- applySettings(dialog);
- dialog->setWindowTitle(tr("Non-Modal File Dialog Qt %1").arg(QLatin1String(QT_VERSION_STR)));
- dialog->show();
+ if (m_nonModalDialog.isNull()) {
+ static int n = 0;
+ m_nonModalDialog = new QFileDialog(this);
+ connect(m_nonModalDialog.data(), SIGNAL(accepted()), this, SLOT(accepted()));
+ m_nonModalDialog->setWindowTitle(tr("Non-Modal File Dialog #%1 Qt %2")
+ .arg(++n)
+ .arg(QLatin1String(QT_VERSION_STR)));
+ enableDeleteNonModalDialogButton();
+ }
+ applySettings(m_nonModalDialog);
+ m_nonModalDialog->show();
+}
+
+void FileDialogPanel::deleteNonModalDialog()
+{
+ if (!m_nonModalDialog.isNull())
+ delete m_nonModalDialog;
+ enableDeleteNonModalDialogButton();
}
+void FileDialogPanel::deleteModalDialog()
+{
+ if (!m_modalDialog.isNull())
+ delete m_modalDialog;
+ enableDeleteModalDialogButton();
+}
+
+void FileDialogPanel::enableDeleteNonModalDialogButton()
+{
+ m_deleteNonModalDialogButton->setEnabled(!m_nonModalDialog.isNull());
+}
+
+void FileDialogPanel::enableDeleteModalDialogButton()
+{
+ m_deleteModalDialogButton->setEnabled(!m_modalDialog.isNull());
+}
+
+
QString FileDialogPanel::filterString() const
{
return m_nameFilters->toPlainText().trimmed().replace(QLatin1String("\n"), QLatin1String(";;"));
@@ -340,7 +400,9 @@ void FileDialogPanel::applySettings(QFileDialog *d) const
d->setFileMode(comboBoxValue<QFileDialog::FileMode>(m_fileMode));
d->setOptions(options());
d->setDefaultSuffix(m_defaultSuffix->text().trimmed());
- d->setDirectory(m_directory->text().trimmed());
+ const QString directory = m_directory->text().trimmed();
+ if (!directory.isEmpty())
+ d->setDirectory(directory);
const QString file = m_selectedFileName->text().trimmed();
if (!file.isEmpty())
d->selectFile(file);
@@ -350,7 +412,6 @@ void FileDialogPanel::applySettings(QFileDialog *d) const
d->selectNameFilter(filter);
foreach (LabelLineEdit *l, m_labelLineEdits)
l->apply(d);
- connect(d, SIGNAL(accepted()), this, SLOT(accepted()));
}
void FileDialogPanel::accepted()
diff --git a/tests/manual/dialogs/filedialogpanel.h b/tests/manual/dialogs/filedialogpanel.h
index 699d917e4d..7ee7cb3f60 100644
--- a/tests/manual/dialogs/filedialogpanel.h
+++ b/tests/manual/dialogs/filedialogpanel.h
@@ -44,7 +44,9 @@
#include <QGroupBox>
#include <QFileDialog>
+#include <QPointer>
+class QPushButton;
class QCheckBox;
class QComboBox;
class QLineEdit;
@@ -58,8 +60,11 @@ public:
explicit FileDialogPanel(QWidget *parent = 0);
public slots:
+ void execModal();
void showModal();
void showNonModal();
+ void deleteNonModalDialog();
+ void deleteModalDialog();
void getOpenFileNames();
void getOpenFileName();
void getSaveFileName();
@@ -68,6 +73,10 @@ public slots:
void showAcceptedResult();
void restoreDefaults();
+private slots:
+ void enableDeleteNonModalDialogButton();
+ void enableDeleteModalDialogButton();
+
private:
QString filterString() const;
QFileDialog::Options options() const;
@@ -87,7 +96,11 @@ private:
QList<LabelLineEdit *> m_labelLineEdits;
QPlainTextEdit *m_nameFilters;
QLineEdit *m_selectedNameFilter;
+ QPushButton *m_deleteNonModalDialogButton;
+ QPushButton *m_deleteModalDialogButton;
QString m_result;
+ QPointer<QFileDialog> m_modalDialog;
+ QPointer<QFileDialog> m_nonModalDialog;
};
#endif // FILEDIALOGPANEL_H
diff --git a/tests/manual/dialogs/fontdialogpanel.cpp b/tests/manual/dialogs/fontdialogpanel.cpp
new file mode 100644
index 0000000000..2bdbb0625a
--- /dev/null
+++ b/tests/manual/dialogs/fontdialogpanel.cpp
@@ -0,0 +1,208 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 "fontdialogpanel.h"
+
+#include <QGroupBox>
+#include <QCheckBox>
+#include <QPushButton>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QMessageBox>
+#include <QFontComboBox>
+#include <QDoubleSpinBox>
+#include <QTimer>
+#include <QDebug>
+
+static inline QPushButton *addButton(const QString &description, QVBoxLayout *layout,
+ QObject *receiver, const char *slotFunc)
+{
+ QPushButton *button = new QPushButton(description);
+ QObject::connect(button, SIGNAL(clicked()), receiver, slotFunc);
+ layout->addWidget(button);
+ return button;
+}
+
+FontDialogPanel::FontDialogPanel(QWidget *parent)
+ : QWidget(parent)
+ , m_fontFamilyBox(new QFontComboBox)
+ , m_fontSizeBox(new QDoubleSpinBox)
+ , m_noButtons(new QCheckBox(tr("Don't display OK/Cancel buttons")))
+ , m_dontUseNativeDialog(new QCheckBox(tr("Don't use native dialog")))
+{
+ // Options
+ QGroupBox *optionsGroupBox = new QGroupBox(tr("Options"), this);
+ QVBoxLayout *optionsLayout = new QVBoxLayout(optionsGroupBox);
+ optionsLayout->addWidget(m_noButtons);
+ optionsLayout->addWidget(m_dontUseNativeDialog);
+
+ // Font
+ QGroupBox *fontGroupBox = new QGroupBox(tr("Font"), this);
+ QHBoxLayout *fontLayout = new QHBoxLayout(fontGroupBox);
+ fontLayout->addWidget(m_fontFamilyBox);
+ fontLayout->addWidget(m_fontSizeBox);
+ m_fontSizeBox->setValue(QFont().pointSizeF());
+
+ // Buttons
+ QGroupBox *buttonsGroupBox = new QGroupBox(tr("Show"));
+ QVBoxLayout *buttonsLayout = new QVBoxLayout(buttonsGroupBox);
+ addButton(tr("Exec modal"), buttonsLayout, this, SLOT(execModal()));
+ addButton(tr("Show modal"), buttonsLayout, this, SLOT(showModal()));
+ m_deleteModalDialogButton =
+ addButton(tr("Delete modal"), buttonsLayout, this, SLOT(deleteModalDialog()));
+ addButton(tr("Show non-modal"), buttonsLayout, this, SLOT(showNonModal()));
+ m_deleteNonModalDialogButton =
+ addButton(tr("Delete non-modal"), buttonsLayout, this, SLOT(deleteNonModalDialog()));
+ addButton(tr("Restore defaults"), buttonsLayout, this, SLOT(restoreDefaults()));
+ buttonsLayout->addStretch();
+
+ // Main layout
+ QHBoxLayout *mainLayout = new QHBoxLayout(this);
+ QVBoxLayout *leftLayout = new QVBoxLayout;
+ leftLayout->addWidget(optionsGroupBox);
+ leftLayout->addWidget(fontGroupBox);
+ leftLayout->addStretch();
+ mainLayout->addLayout(leftLayout);
+ mainLayout->addWidget(buttonsGroupBox);
+
+ enableDeleteModalDialogButton();
+ enableDeleteNonModalDialogButton();
+ restoreDefaults();
+}
+
+void FontDialogPanel::execModal()
+{
+ QFontDialog dialog(this);
+ applySettings(&dialog);
+ connect(&dialog, SIGNAL(accepted()), this, SLOT(accepted()));
+ dialog.setWindowTitle(tr("Modal Font Dialog Qt %1").arg(QLatin1String(QT_VERSION_STR)));
+ dialog.exec();
+}
+
+void FontDialogPanel::showModal()
+{
+ if (m_modalDialog.isNull()) {
+ static int n = 0;
+ m_modalDialog = new QFontDialog(this);
+ m_modalDialog->setModal(true);
+ connect(m_modalDialog.data(), SIGNAL(accepted()), this, SLOT(accepted()));
+ m_modalDialog->setWindowTitle(tr("Modal Font Dialog #%1 Qt %2")
+ .arg(++n)
+ .arg(QLatin1String(QT_VERSION_STR)));
+ enableDeleteModalDialogButton();
+ }
+ applySettings(m_modalDialog);
+ m_modalDialog->show();
+}
+
+void FontDialogPanel::showNonModal()
+{
+ if (m_nonModalDialog.isNull()) {
+ static int n = 0;
+ m_nonModalDialog = new QFontDialog(this);
+ connect(m_nonModalDialog.data(), SIGNAL(accepted()), this, SLOT(accepted()));
+ m_nonModalDialog->setWindowTitle(tr("Non-Modal Font Dialog #%1 Qt %2")
+ .arg(++n)
+ .arg(QLatin1String(QT_VERSION_STR)));
+ enableDeleteNonModalDialogButton();
+ }
+ applySettings(m_nonModalDialog);
+ m_nonModalDialog->show();
+}
+
+void FontDialogPanel::deleteNonModalDialog()
+{
+ if (!m_nonModalDialog.isNull())
+ delete m_nonModalDialog;
+ enableDeleteNonModalDialogButton();
+}
+
+void FontDialogPanel::deleteModalDialog()
+{
+ if (!m_modalDialog.isNull())
+ delete m_modalDialog;
+ enableDeleteModalDialogButton();
+}
+
+void FontDialogPanel::accepted()
+{
+ const QFontDialog *d = qobject_cast<const QFontDialog *>(sender());
+ Q_ASSERT(d);
+ m_result.clear();
+ QDebug(&m_result).nospace()
+ << "Current font: " << d->currentFont()
+ << "\nSelected font: " << d->selectedFont();
+ QTimer::singleShot(0, this, SLOT(showAcceptedResult())); // Avoid problems with the closing (modal) dialog as parent.
+}
+
+void FontDialogPanel::showAcceptedResult()
+{
+ QMessageBox::information(this, tr("Color Dialog Accepted"), m_result, QMessageBox::Ok);
+}
+
+void FontDialogPanel::restoreDefaults()
+{
+ QFontDialog d;
+ m_noButtons->setChecked(d.testOption(QFontDialog::NoButtons));
+ m_dontUseNativeDialog->setChecked(d.testOption(QFontDialog::DontUseNativeDialog));
+ m_fontFamilyBox->setCurrentFont(QFont());
+ m_fontSizeBox->setValue(QFont().pointSizeF());
+}
+
+void FontDialogPanel::enableDeleteNonModalDialogButton()
+{
+ m_deleteNonModalDialogButton->setEnabled(!m_nonModalDialog.isNull());
+}
+
+void FontDialogPanel::enableDeleteModalDialogButton()
+{
+ m_deleteModalDialogButton->setEnabled(!m_modalDialog.isNull());
+}
+
+void FontDialogPanel::applySettings(QFontDialog *d) const
+{
+ d->setOption(QFontDialog::NoButtons, m_noButtons->isChecked());
+ d->setOption(QFontDialog::DontUseNativeDialog, m_dontUseNativeDialog->isChecked());
+
+ QFont font = m_fontFamilyBox->currentFont();
+ font.setPointSizeF(m_fontSizeBox->value());
+ d->setCurrentFont(font);
+}
diff --git a/tests/manual/dialogs/fontdialogpanel.h b/tests/manual/dialogs/fontdialogpanel.h
new file mode 100644
index 0000000000..92f2b7313f
--- /dev/null
+++ b/tests/manual/dialogs/fontdialogpanel.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 FONTDIALOGPANEL_H
+#define FONTDIALOGPANEL_H
+
+#include <QPointer>
+#include <QFontDialog>
+
+class QCheckBox;
+class QPushButton;
+class QFontComboBox;
+class QDoubleSpinBox;
+
+class FontDialogPanel : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit FontDialogPanel(QWidget *parent = 0);
+
+public slots:
+ void execModal();
+ void showModal();
+ void showNonModal();
+ void deleteNonModalDialog();
+ void deleteModalDialog();
+ void accepted();
+ void showAcceptedResult();
+ void restoreDefaults();
+
+private slots:
+ void enableDeleteNonModalDialogButton();
+ void enableDeleteModalDialogButton();
+
+private:
+ void applySettings(QFontDialog *d) const;
+
+ QFontComboBox *m_fontFamilyBox;
+ QDoubleSpinBox *m_fontSizeBox;
+ QCheckBox *m_noButtons;
+ QCheckBox *m_dontUseNativeDialog;
+ QPushButton *m_deleteNonModalDialogButton;
+ QPushButton *m_deleteModalDialogButton;
+ QString m_result;
+ QPointer<QFontDialog> m_modalDialog;
+ QPointer<QFontDialog> m_nonModalDialog;
+};
+
+#endif // FONTDIALOGPANEL_H
diff --git a/tests/manual/dialogs/main.cpp b/tests/manual/dialogs/main.cpp
index c1ea7b0d8f..86e6c90b3f 100644
--- a/tests/manual/dialogs/main.cpp
+++ b/tests/manual/dialogs/main.cpp
@@ -40,6 +40,9 @@
****************************************************************************/
#include "filedialogpanel.h"
+#include "colordialogpanel.h"
+#include "fontdialogpanel.h"
+#include "wizardpanel.h"
#include <QMainWindow>
#include <QApplication>
@@ -50,7 +53,6 @@
#include <QKeySequence>
// Test for dialogs, allowing to play with all dialog options for implementing native dialogs.
-// Currently, only QFileDialog is implemented.
// Compiles with Qt 4.8 and Qt 5.
class MainWindow : public QMainWindow {
@@ -68,6 +70,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
QTabWidget *tabWidget = new QTabWidget;
tabWidget->addTab(new FileDialogPanel, tr("QFileDialog"));
+ tabWidget->addTab(new ColorDialogPanel, tr("QColorDialog"));
+ tabWidget->addTab(new FontDialogPanel, tr("QFontDialog"));
+ tabWidget->addTab(new WizardPanel, tr("QWizard"));
setCentralWidget(tabWidget);
}
diff --git a/tests/manual/dialogs/wizardpanel.cpp b/tests/manual/dialogs/wizardpanel.cpp
new file mode 100644
index 0000000000..1306062426
--- /dev/null
+++ b/tests/manual/dialogs/wizardpanel.cpp
@@ -0,0 +1,361 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 "wizardpanel.h"
+
+#include <QWizard>
+#include <QWizardPage>
+#include <QVBoxLayout>
+#include <QGridLayout>
+#include <QRadioButton>
+#include <QPushButton>
+#include <QCheckBox>
+#include <QButtonGroup>
+#include <QSpacerItem>
+#include <QGroupBox>
+#include <QLabel>
+#include <QStyle>
+#include <QIcon>
+#include <QImage>
+#include <QPainter>
+#include <QFont>
+#include <QFontMetrics>
+#include <QHash>
+
+static QIcon coloredIcon(const Qt::GlobalColor color)
+{
+ QImage image(QSize(24, 24), QImage::Format_RGB32);
+ image.fill(color);
+ return QIcon(QPixmap::fromImage(image));
+}
+
+static QPixmap pixmapWithText(const QString &text, const QColor color)
+{
+ QFont font;
+ QFontMetrics metric(font);
+ QRect rectangle = metric.boundingRect(text);
+ rectangle.setBottomRight(rectangle.bottomRight() + QPoint(20, 20));
+ QImage image(rectangle.size(), QImage::Format_RGB32);
+ image.fill(color);
+ QPainter painter(&image);
+ painter.setFont(font);
+ painter.drawText(rectangle, Qt::AlignHCenter | Qt::AlignVCenter, text);
+ return QPixmap::fromImage(image);
+}
+
+// A radio-group control for QWizard::WizardStyle.
+class WizardStyleControl : public QGroupBox
+{
+ Q_OBJECT
+public:
+ WizardStyleControl(QWidget *parent = 0);
+
+ void setWizardStyle(int style);
+ QWizard::WizardStyle wizardStyle() const;
+
+signals:
+ void wizardStyleChanged(int);
+
+private:
+ QButtonGroup *m_group;
+};
+
+WizardStyleControl::WizardStyleControl(QWidget *parent)
+ : QGroupBox(tr("Style"), parent)
+ , m_group(new QButtonGroup(this))
+{
+ m_group->setExclusive(true);
+ connect(m_group, SIGNAL(buttonClicked(int)), this, SIGNAL(wizardStyleChanged(int)));
+ QVBoxLayout *vLayout = new QVBoxLayout(this);
+ QRadioButton *radioButton = new QRadioButton(tr("None/OS Default"), this);
+ m_group->addButton(radioButton, QWizard::NStyles);
+ vLayout->addWidget(radioButton);
+ radioButton = new QRadioButton(tr("ClassicStyle"), this);
+ m_group->addButton(radioButton, QWizard::ClassicStyle);
+ vLayout->addWidget(radioButton);
+ radioButton = new QRadioButton(tr("ModernStyle"), this);
+ m_group->addButton(radioButton, QWizard::ModernStyle);
+ vLayout->addWidget(radioButton);
+ radioButton = new QRadioButton(tr("MacStyle"), this);
+ m_group->addButton(radioButton, QWizard::MacStyle);
+ vLayout->addWidget(radioButton);
+ radioButton = new QRadioButton(tr("AeroStyle"), this);
+ m_group->addButton(radioButton, QWizard::AeroStyle);
+ vLayout->addWidget(radioButton);
+ vLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding));
+
+ setWizardStyle(style()->styleHint(QStyle::SH_WizardStyle));
+}
+
+QWizard::WizardStyle WizardStyleControl::wizardStyle() const
+{
+ return static_cast<QWizard::WizardStyle>(m_group->checkedId());
+}
+
+void WizardStyleControl::setWizardStyle(int wizardStyle)
+{
+ if (wizardStyle < 0 || wizardStyle > QWizard::NStyles)
+ wizardStyle = QWizard::NStyles;
+ QAbstractButton *button = m_group->button(wizardStyle);
+ Q_ASSERT(button);
+ const bool blocked = m_group->blockSignals(true);
+ button->setChecked(true);
+ m_group->blockSignals(blocked);
+}
+
+// A control with checkboxes for QWizard::WizardOption.
+class WizardOptionsControl : public QGroupBox
+{
+public:
+ explicit WizardOptionsControl(QWidget *parent = 0);
+
+ QWizard::WizardOption wizardOptions() const;
+ void setWizardOptions(int options);
+
+private:
+ typedef QHash<int, QCheckBox *> CheckBoxHash;
+
+ void addCheckBox(QVBoxLayout *layout, int flag, const QString &title);
+
+ CheckBoxHash m_checkBoxes;
+};
+
+WizardOptionsControl::WizardOptionsControl(QWidget *parent)
+ : QGroupBox(tr("Options"), parent)
+{
+ QVBoxLayout *vLayout = new QVBoxLayout(this);
+ addCheckBox(vLayout, QWizard::IndependentPages, QLatin1String("IndependentPages"));
+ addCheckBox(vLayout, QWizard::IgnoreSubTitles, QLatin1String("IgnoreSubTitles"));
+ addCheckBox(vLayout, QWizard::ExtendedWatermarkPixmap, QLatin1String("ExtendedWatermarkPixmap"));
+ addCheckBox(vLayout, QWizard::NoDefaultButton, QLatin1String("NoDefaultButton"));
+ addCheckBox(vLayout, QWizard::NoBackButtonOnStartPage, QLatin1String("NoBackButtonOnStartPage"));
+ addCheckBox(vLayout, QWizard::NoBackButtonOnLastPage, QLatin1String("NoBackButtonOnLastPage"));
+ addCheckBox(vLayout, QWizard::DisabledBackButtonOnLastPage, QLatin1String("DisabledBackButtonOnLastPage"));
+ addCheckBox(vLayout, QWizard::HaveNextButtonOnLastPage, QLatin1String("HaveNextButtonOnLastPage"));
+ addCheckBox(vLayout, QWizard::HaveFinishButtonOnEarlyPages, QLatin1String("HaveFinishButtonOnEarlyPages"));
+ addCheckBox(vLayout, QWizard::NoCancelButton, QLatin1String("NoCancelButton"));
+ addCheckBox(vLayout, QWizard::CancelButtonOnLeft, QLatin1String("CancelButtonOnLeft"));
+ addCheckBox(vLayout, QWizard::HaveHelpButton, QLatin1String("HaveHelpButton"));
+ addCheckBox(vLayout, QWizard::HelpButtonOnRight, QLatin1String("HelpButtonOnRight"));
+ addCheckBox(vLayout, QWizard::HaveCustomButton1, QLatin1String("HaveCustomButton1"));
+ addCheckBox(vLayout, QWizard::HaveCustomButton2, QLatin1String("HaveCustomButton2"));
+ addCheckBox(vLayout, QWizard::HaveCustomButton3, QLatin1String("HaveCustomButton3"));
+ vLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding));
+}
+
+void WizardOptionsControl::addCheckBox(QVBoxLayout *layout, int flag, const QString &title)
+{
+ QCheckBox *checkBox = new QCheckBox(title, this);
+ layout->addWidget(checkBox);
+ m_checkBoxes.insert(flag, checkBox);
+}
+
+QWizard::WizardOption WizardOptionsControl::wizardOptions() const
+{
+ int result = 0;
+ typedef CheckBoxHash::const_iterator ConstIterator;
+ const ConstIterator cend = m_checkBoxes.constEnd();
+ for (ConstIterator it = m_checkBoxes.constBegin(); it != cend; ++it)
+ if (it.value()->isChecked())
+ result |= it.key();
+ return static_cast<QWizard::WizardOption>(result);
+}
+
+void WizardOptionsControl::setWizardOptions(int options)
+{
+ typedef CheckBoxHash::iterator Iterator;
+ const Iterator end = m_checkBoxes.end();
+ for (Iterator it = m_checkBoxes.begin(); it != end; ++it)
+ it.value()->setChecked(options & it.key());
+}
+
+// A test wizard with a slot to change its style.
+class Wizard : public QWizard {
+ Q_OBJECT
+public:
+ explicit Wizard(QWidget *parent = 0, Qt::WindowFlags flags = 0);
+
+public slots:
+ void changeWizardStyle(int newStyle);
+};
+
+void Wizard::changeWizardStyle(int newStyle)
+{
+ if (newStyle >= 0 && newStyle < int(QWizard::NStyles))
+ setWizardStyle(static_cast<QWizard::WizardStyle>(newStyle));
+}
+
+// A test wizard page with a WizardStyleControl.
+class WizardPage : public QWizardPage
+{
+public:
+ explicit WizardPage(const QString &title, QWidget *parent = 0);
+
+ void initializePage();
+
+private:
+ WizardStyleControl *m_styleControl;
+ bool m_firstTimeShown;
+};
+
+WizardPage::WizardPage(const QString &title, QWidget *parent)
+ : QWizardPage(parent)
+ , m_styleControl(new WizardStyleControl(this))
+ , m_firstTimeShown(true)
+{
+ setTitle(title);
+ setSubTitle(title + QLatin1String(" SubTitle"));
+ QVBoxLayout *vLayout = new QVBoxLayout(this);
+ vLayout->addWidget(m_styleControl);
+}
+
+void WizardPage::initializePage()
+{
+ m_styleControl->setWizardStyle(wizard()->wizardStyle());
+ if (m_firstTimeShown) {
+ m_firstTimeShown = false;
+ connect(m_styleControl, SIGNAL(wizardStyleChanged(int)),
+ wizard(), SLOT(changeWizardStyle(int)));
+ }
+}
+
+Wizard::Wizard(QWidget *parent, Qt::WindowFlags flags)
+ : QWizard(parent, flags)
+{
+ setWindowIcon(coloredIcon(Qt::red));
+ setWindowTitle(QLatin1String("Wizard ") + QLatin1String(QT_VERSION_STR));
+ addPage(new WizardPage(tr("Page 1"), this));
+ addPage(new WizardPage(tr("Page 2"), this));
+ addPage(new WizardPage(tr("Page 3"), this));
+}
+
+// A dialog using a Wizard as child widget (emulating Qt Designer).
+class WizardEmbeddingDialog : public QDialog {
+public:
+ explicit WizardEmbeddingDialog(QWidget *parent = 0);
+
+ Wizard *wizard() const { return m_wizard; }
+
+private:
+ Wizard *m_wizard;
+};
+
+WizardEmbeddingDialog::WizardEmbeddingDialog(QWidget *parent)
+ : QDialog(parent)
+ , m_wizard(new Wizard)
+{
+ setWindowTitle(QString::fromLatin1("Dialog Embedding QWizard %1").arg(QT_VERSION_STR));
+ QGridLayout *gridLayout = new QGridLayout(this);
+ gridLayout->addWidget(new QLabel(tr("Above wizard")), 0, 0, 1, 3);
+ gridLayout->addWidget(new QLabel(tr("Left of wizard")), 1, 0);
+ m_wizard->setObjectName(QLatin1String("EmbeddedWizard"));
+ m_wizard->setParent(this, Qt::Widget);
+ gridLayout->addWidget(m_wizard, 1, 1);
+ gridLayout->addWidget(new QLabel(tr("Right of wizard")), 1, 2);
+ gridLayout->addWidget(new QLabel(tr("Below wizard")), 2, 0, 1, 3);
+}
+
+WizardPanel::WizardPanel(QWidget *parent)
+ : QWidget(parent)
+ , m_styleControl(new WizardStyleControl(this))
+ , m_optionsControl(new WizardOptionsControl(this))
+{
+ {
+ QWizard wizard;
+ m_optionsControl->setWizardOptions(wizard.options());
+ m_styleControl->setWizardStyle(wizard.wizardStyle());
+ }
+
+ QGridLayout *gridLayout = new QGridLayout(this);
+ gridLayout->addWidget(m_optionsControl, 0, 0, 2, 1);
+ gridLayout->addWidget(m_styleControl, 0, 1);
+ QGroupBox *buttonGroupBox = new QGroupBox(this);
+ QVBoxLayout *vLayout = new QVBoxLayout(buttonGroupBox);
+ QPushButton *button = new QPushButton(tr("Show modal"), this);
+ connect(button, SIGNAL(clicked()), this, SLOT(showModal()));
+ vLayout->addWidget(button);
+ button = new QPushButton(tr("Show non-modal"), this);
+ connect(button, SIGNAL(clicked()), this, SLOT(showNonModal()));
+ vLayout->addWidget(button);
+ button = new QPushButton(tr("Show embedded"), this);
+ button->setToolTip(tr("Test QWizard's behavior when used as a widget child."));
+ connect(button, SIGNAL(clicked()), this, SLOT(showEmbedded()));
+ vLayout->addWidget(button);
+ vLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding));
+ gridLayout->addWidget(buttonGroupBox, 1, 1);
+}
+
+void WizardPanel::showModal()
+{
+ Wizard wizard(this);
+ applyParameters(&wizard);
+ wizard.exec();
+}
+
+void WizardPanel::showNonModal()
+{
+ Wizard *wizard = new Wizard(this);
+ applyParameters(wizard);
+ wizard->setModal(false);
+ wizard->setAttribute(Qt::WA_DeleteOnClose);
+ wizard->show();
+}
+
+void WizardPanel::showEmbedded()
+{
+ WizardEmbeddingDialog *dialog = new WizardEmbeddingDialog(this);
+ applyParameters(dialog->wizard());
+ dialog->setModal(false);
+ dialog->setAttribute(Qt::WA_DeleteOnClose);
+ dialog->show();
+}
+
+void WizardPanel::applyParameters(QWizard *wizard) const
+{
+ wizard->setWizardStyle(m_styleControl->wizardStyle());
+ wizard->setOptions(m_optionsControl->wizardOptions());
+ wizard->setPixmap(QWizard::WatermarkPixmap, pixmapWithText(QLatin1String("Watermark"), QColor(Qt::blue).lighter()));
+ wizard->setPixmap(QWizard::LogoPixmap, pixmapWithText(QLatin1String("Logo"), Qt::green));
+ wizard->setPixmap(QWizard::BannerPixmap, pixmapWithText(QLatin1String("Banner"), Qt::green));
+ wizard->setPixmap(QWizard::BackgroundPixmap, pixmapWithText(QLatin1String("Background"), QColor(Qt::red).lighter()));
+}
+
+#include "wizardpanel.moc"
diff --git a/tests/manual/dialogs/wizardpanel.h b/tests/manual/dialogs/wizardpanel.h
new file mode 100644
index 0000000000..0a4ec8e467
--- /dev/null
+++ b/tests/manual/dialogs/wizardpanel.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 examples 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 WIZARDPANEL_H
+#define WIZARDPANEL_H
+
+#include <QWidget>
+
+class WizardStyleControl;
+class WizardOptionsControl;
+class QWizard;
+
+class WizardPanel : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit WizardPanel(QWidget *parent = 0);
+
+public slots:
+ void showModal();
+ void showNonModal();
+ void showEmbedded();
+
+private:
+ void applyParameters(QWizard *wizard) const;
+
+ WizardStyleControl *m_styleControl;
+ WizardOptionsControl *m_optionsControl;
+};
+
+#endif // WIZARDPANEL_H
diff --git a/tests/manual/filetest/main.cpp b/tests/manual/filetest/main.cpp
index 9d94265df7..2f7c5cdd06 100644
--- a/tests/manual/filetest/main.cpp
+++ b/tests/manual/filetest/main.cpp
@@ -46,6 +46,7 @@
#include <QDir>
#include <iostream>
+#include <string>
static const char usage1[] =
"\nTests various file functionality in Qt\n\n"
@@ -58,11 +59,46 @@ static const char usage2[] =" [KEYWORD] [ARGUMENTS]\n\n"
" rmr DIR remove directory recursively\n"
" using QDir::removeRecursively\n";
+static inline std::string permissions(QFile::Permissions permissions)
+{
+ std::string result(10, '-');
+ if (permissions & QFile::ReadOwner)
+ result[1] = 'r';
+ if (permissions & QFile::WriteOwner)
+ result[2] = 'w';
+ if (permissions & QFile::ExeOwner)
+ result[3] = 'x';
+ if (permissions & QFile::ReadGroup)
+ result[4] = 'r';
+ if (permissions & QFile::WriteGroup)
+ result[5] = 'w';
+ if (permissions & QFile::ExeGroup)
+ result[6] = 'x';
+ if (permissions & QFile::ReadOther)
+ result[7] = 'r';
+ if (permissions & QFile::WriteOther)
+ result[8] = 'w';
+ if (permissions & QFile::ExeOther)
+ result[9] = 'x';
+ return result;
+}
+
+static inline std::string permissions(const QFileInfo &fi)
+{
+ std::string result = permissions(fi.permissions());
+ if (fi.isSymLink())
+ result[0] = 'l';
+ else if (fi.isDir())
+ result[0] = 'd';
+ return result;
+}
+
static int ls(int argCount, char **args)
{
for (int i = 0 ; i < argCount; ++i) {
const QFileInfo fi(QString::fromLocal8Bit(args[i]));
- std::cout << QDir::toNativeSeparators(fi.absoluteFilePath()).toStdString() << ' ' << fi.size();
+ std::cout << QDir::toNativeSeparators(fi.absoluteFilePath()).toStdString() << ' ' << fi.size()
+ << ' ' << permissions(fi);
if (fi.exists())
std::cout << " [exists]";
if (fi.isFile())
@@ -73,6 +109,7 @@ static int ls(int argCount, char **args)
}
if (fi.isDir())
std::cout << " [dir]";
+
std::cout << std::endl;
}
return 0;
@@ -110,12 +147,18 @@ static int rm(const char *fileName)
static int rmr(const char *dirName)
{
+#if QT_VERSION < 0x050000
+ Q_UNUSED(dirName)
+ return 1;
+#else
QDir dir(QString::fromLocal8Bit(dirName));
if (!dir.removeRecursively()) {
qWarning().nospace() << "Failed to remove " << dir.absolutePath();
return -1;
}
+
return 0;
+#endif
}
int main(int argc, char *argv[])
diff --git a/tests/manual/inputmethodhints/inputmethodhints.h b/tests/manual/inputmethodhints/inputmethodhints.h
index 09c6ca41f5..ce1724280f 100644
--- a/tests/manual/inputmethodhints/inputmethodhints.h
+++ b/tests/manual/inputmethodhints/inputmethodhints.h
@@ -52,7 +52,7 @@ class inputmethodhints : public QMainWindow
public:
inputmethodhints(QWidget *parent = 0);
~inputmethodhints();
-
+
public slots:
void checkboxChanged(int);
diff --git a/tests/manual/lance/lance.pro b/tests/manual/lance/lance.pro
index 177ca0e40e..430c9196e6 100644
--- a/tests/manual/lance/lance.pro
+++ b/tests/manual/lance/lance.pro
@@ -1,5 +1,6 @@
LANCELOT_DIR = $$PWD/../../auto/other/lancelot
CONFIG+=console moc
+CONFIG -= app_bundle
TEMPLATE = app
INCLUDEPATH += . $$LANCELOT_DIR
QT += core-private gui-private widgets printsupport
diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro
index 525f596d0e..1169ea6a27 100644
--- a/tests/manual/manual.pro
+++ b/tests/manual/manual.pro
@@ -20,6 +20,7 @@ qlocale \
qnetworkaccessmanager/qget \
qnetworkconfigurationmanager \
qnetworkreply \
+qpainfo \
qscreen \
qssloptions \
qtabletevent \
@@ -34,11 +35,14 @@ windowflags \
windowgeometry \
windowmodality \
widgetgrab \
+xembed-raster \
+xembed-widgets \
dialogs
!contains(QT_CONFIG, openssl):!contains(QT_CONFIG, openssl-linked):SUBDIRS -= qssloptions
-# disable some tests on wince because of missing dependencies
-wince*:SUBDIRS -= \
- lance windowmodality \
- network_remote_stresstest network_stresstest
+win32 {
+ SUBDIRS -= network_remote_stresstest network_stresstest
+ # disable some tests on wince because of missing dependencies
+ wince*:SUBDIRS -= lance windowmodality
+}
diff --git a/tests/manual/qcursor/grab_override/mainwindow.h b/tests/manual/qcursor/grab_override/mainwindow.h
index c105e22850..eaf4b95615 100644
--- a/tests/manual/qcursor/grab_override/mainwindow.h
+++ b/tests/manual/qcursor/grab_override/mainwindow.h
@@ -64,11 +64,11 @@ private slots:
private:
void keyPressEvent(QKeyEvent* event);
-
+
Ui::MainWindow *ui;
QTimer *timer;
int override;
-
+
QCursor ccurs;
QCursor bcurs;
};
diff --git a/tests/manual/qlocale/calendar.cpp b/tests/manual/qlocale/calendar.cpp
index d91e181461..d7ac33e6a4 100644
--- a/tests/manual/qlocale/calendar.cpp
+++ b/tests/manual/qlocale/calendar.cpp
@@ -397,9 +397,9 @@ void CalendarWidget::createTextFormatsGroupBox()
QComboBox *CalendarWidget::createColorComboBox()
{
QComboBox *comboBox = new QComboBox;
- comboBox->addItem(tr("Red"), Qt::red);
- comboBox->addItem(tr("Blue"), Qt::blue);
- comboBox->addItem(tr("Black"), Qt::black);
- comboBox->addItem(tr("Magenta"), Qt::magenta);
+ comboBox->addItem(tr("Red"), QColor(Qt::red));
+ comboBox->addItem(tr("Blue"), QColor(Qt::blue));
+ comboBox->addItem(tr("Black"), QColor(Qt::black));
+ comboBox->addItem(tr("Magenta"), QColor(Qt::magenta));
return comboBox;
}
diff --git a/tests/manual/qnetworkreply/main.cpp b/tests/manual/qnetworkreply/main.cpp
index feb07b4c7d..2f47985261 100644
--- a/tests/manual/qnetworkreply/main.cpp
+++ b/tests/manual/qnetworkreply/main.cpp
@@ -49,7 +49,7 @@
#include <QtNetwork/qsslconfiguration.h>
#include "../../auto/network-settings.h"
-#ifdef QT_BUILD_INTERNAL
+#if defined(QT_BUILD_INTERNAL) && !defined(QT_NO_SSL)
#include "private/qsslsocket_p.h"
#endif
@@ -147,6 +147,9 @@ void tst_qnetworkreply::setSslConfiguration_data()
void tst_qnetworkreply::setSslConfiguration()
{
+#ifdef QT_NO_SSL
+ QSKIP("SSL is not enabled.");
+#else
QFETCH(QUrl, url);
QNetworkRequest request(url);
QSslConfiguration conf = request.sslConfiguration();
@@ -171,6 +174,7 @@ void tst_qnetworkreply::setSslConfiguration()
QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError);
}
#endif
+#endif // QT_NO_SSL
}
QTEST_MAIN(tst_qnetworkreply)
diff --git a/tests/manual/qpainfo/main.cpp b/tests/manual/qpainfo/main.cpp
new file mode 100644
index 0000000000..6b712304a0
--- /dev/null
+++ b/tests/manual/qpainfo/main.cpp
@@ -0,0 +1,220 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite 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 <QGuiApplication>
+#include <QStyleHints>
+#include <QLibraryInfo>
+#include <private/qguiapplication_p.h>
+#include <qpa/qplatformintegration.h>
+#include <qpa/qplatformtheme.h>
+#include <QScreen>
+#include <QStringList>
+#include <QVariant>
+#include <QFont>
+#include <QSysInfo>
+#include <QLibraryInfo>
+#include <QStandardPaths>
+#include <QDir>
+
+#include <iostream>
+#include <string>
+
+std::ostream &operator<<(std::ostream &str, const QSize &s)
+{
+ str << s.width() << 'x' << s.height();
+ return str;
+}
+
+std::ostream &operator<<(std::ostream &str, const QSizeF &s)
+{
+ str << s.width() << 'x' << s.height();
+ return str;
+}
+
+std::ostream &operator<<(std::ostream &str, const QRect &r)
+{
+ str << r.size() << '+' << r.x() << '+' << r.y();
+ return str;
+}
+
+std::ostream &operator<<(std::ostream &str, const QStringList &l)
+{
+ for (int i = 0; i < l.size(); ++i) {
+ if (i)
+ str << ',';
+ str << l.at(i).toStdString();
+ }
+ return str;
+}
+
+static QStringList toNativeSeparators(QStringList in)
+{
+ for (int i = 0; i < in.size(); ++i)
+ in[i] = QDir::toNativeSeparators(in.at(i));
+ return in;
+}
+
+#define DUMP_CAPABILITY(integration, capability) \
+ if (platformIntegration->hasCapability(QPlatformIntegration::capability)) \
+ std::cout << ' ' << #capability;
+
+#define DUMP_STANDARDPATH(location) \
+ std::cout << " " << #location << ": \"" \
+ << QStandardPaths::displayName(QStandardPaths::location).toStdString() << '"' \
+ << ' ' << toNativeSeparators(QStandardPaths::standardLocations(QStandardPaths::location)) << '\n';
+
+#define DUMP_LIBRARYPATH(loc) \
+ std::cout << " " << #loc << ": " << QDir::toNativeSeparators(QLibraryInfo::location(QLibraryInfo::loc)).toStdString() << '\n';
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+
+ const QPlatformIntegration *platformIntegration = QGuiApplicationPrivate::platformIntegration();
+ std::cout << "Qt " << QT_VERSION_STR << " on \"" << QGuiApplication::platformName().toStdString() << "\" "
+ << QSysInfo::WordSize << " bit/"
+ << (QSysInfo::ByteOrder == QSysInfo::LittleEndian ? "little endian" : "big endian") << '/'
+ << (QLibraryInfo::isDebugBuild() ? "debug" : "release")
+ << '\n';
+
+#if defined(Q_OS_WIN)
+ std::cout << std::hex << "Windows version: 0x" << QSysInfo::windowsVersion() << std::dec << '\n';
+#elif defined(Q_OS_MAC)
+ std::cout << std::hex << "Mac OS version: 0x" << QSysInfo::macVersion() << std::dec << '\n';
+#endif
+
+ std::cout << "\nLibrary info:\n";
+ DUMP_LIBRARYPATH(PrefixPath)
+ DUMP_LIBRARYPATH(DocumentationPath)
+ DUMP_LIBRARYPATH(HeadersPath)
+ DUMP_LIBRARYPATH(LibrariesPath)
+ DUMP_LIBRARYPATH(LibraryExecutablesPath)
+ DUMP_LIBRARYPATH(BinariesPath)
+ DUMP_LIBRARYPATH(PluginsPath)
+ DUMP_LIBRARYPATH(ImportsPath)
+ DUMP_LIBRARYPATH(Qml2ImportsPath)
+ DUMP_LIBRARYPATH(ArchDataPath)
+ DUMP_LIBRARYPATH(DataPath)
+ DUMP_LIBRARYPATH(TranslationsPath)
+ DUMP_LIBRARYPATH(ExamplesPath)
+ DUMP_LIBRARYPATH(TestsPath)
+
+ std::cout << "\nStandard paths:\n";
+ DUMP_STANDARDPATH(DesktopLocation)
+ DUMP_STANDARDPATH(DocumentsLocation)
+ DUMP_STANDARDPATH(FontsLocation)
+ DUMP_STANDARDPATH(ApplicationsLocation)
+ DUMP_STANDARDPATH(MusicLocation)
+ DUMP_STANDARDPATH(MoviesLocation)
+ DUMP_STANDARDPATH(PicturesLocation)
+ DUMP_STANDARDPATH(TempLocation)
+ DUMP_STANDARDPATH(HomeLocation)
+ DUMP_STANDARDPATH(DataLocation)
+ DUMP_STANDARDPATH(CacheLocation)
+ DUMP_STANDARDPATH(GenericDataLocation)
+ DUMP_STANDARDPATH(RuntimeLocation)
+ DUMP_STANDARDPATH(ConfigLocation)
+ DUMP_STANDARDPATH(DownloadLocation)
+ DUMP_STANDARDPATH(GenericCacheLocation)
+
+ std::cout << "\nPlatform capabilities:";
+ DUMP_CAPABILITY(platformIntegration, ThreadedPixmaps)
+ DUMP_CAPABILITY(platformIntegration, OpenGL)
+ DUMP_CAPABILITY(platformIntegration, ThreadedOpenGL)
+ DUMP_CAPABILITY(platformIntegration, SharedGraphicsCache)
+ DUMP_CAPABILITY(platformIntegration, BufferQueueingOpenGL)
+ DUMP_CAPABILITY(platformIntegration, WindowMasks)
+ DUMP_CAPABILITY(platformIntegration, MultipleWindows)
+ DUMP_CAPABILITY(platformIntegration, ApplicationState)
+ DUMP_CAPABILITY(platformIntegration, ForeignWindows)
+ std::cout << '\n';
+
+ const QStyleHints *styleHints = QGuiApplication::styleHints();
+ std::cout << "\nStyle hints: mouseDoubleClickInterval=" << styleHints->mouseDoubleClickInterval() << " startDragDistance="
+ << styleHints->startDragDistance() << " startDragTime=" << styleHints->startDragTime()
+ << " startDragVelocity=" << styleHints->startDragVelocity() << " keyboardInputInterval=" << styleHints->keyboardInputInterval()
+ << " keyboardAutoRepeatRate=" << styleHints->keyboardAutoRepeatRate() << " cursorFlashTime=" << styleHints->cursorFlashTime()
+ << " showIsFullScreen=" << styleHints->showIsFullScreen() << " passwordMaskDelay=" << styleHints->passwordMaskDelay()
+ << " fontSmoothingGamma=" << styleHints->fontSmoothingGamma() << " useRtlExtensions=" << styleHints->useRtlExtensions() << '\n';
+
+ const QPlatformTheme *platformTheme = QGuiApplicationPrivate::platformTheme();
+ std::cout << "\nTheme:\n Styles: " << platformTheme->themeHint(QPlatformTheme::StyleNames).toStringList();
+ const QString iconTheme = platformTheme->themeHint(QPlatformTheme::SystemIconThemeName).toString();
+ if (!iconTheme.isEmpty()) {
+ std::cout << "\n Icon theme: " << iconTheme.toStdString()
+ << ", " << platformTheme->themeHint(QPlatformTheme::SystemIconFallbackThemeName).toString().toStdString()
+ << " from " << platformTheme->themeHint(QPlatformTheme::IconThemeSearchPaths).toStringList() << '\n';
+ }
+ if (const QFont *systemFont = platformTheme->font())
+ std::cout << " System font: \"" << systemFont->family().toStdString() << "\" " << systemFont->pointSize() << '\n';
+ if (platformTheme->usePlatformNativeDialog(QPlatformTheme::FileDialog))
+ std::cout << " Native file dialog\n";
+ if (platformTheme->usePlatformNativeDialog(QPlatformTheme::ColorDialog))
+ std::cout << " Native color dialog\n";
+ if (platformTheme->usePlatformNativeDialog(QPlatformTheme::FontDialog))
+ std::cout << " Native font dialog\n";
+
+ const QList<QScreen*> screens = QGuiApplication::screens();
+ const int screenCount = screens.size();
+ std::cout << "\nScreens: " << screenCount << '\n';
+ for (int s = 0; s < screenCount; ++s) {
+ const QScreen *screen = screens.at(s);
+ std::cout << (screen == QGuiApplication::primaryScreen() ? '*' : ' ')
+ << '#' << ' ' << s << " \"" << screen->name().toStdString() << '"'
+ << "\n Geometry: " << screen->geometry() << " Available: " << screen->availableGeometry();
+ if (screen->geometry() != screen->virtualGeometry())
+ std::cout << "\n Virtual geometry: " << screen->virtualGeometry() << " Available: " << screen->availableVirtualGeometry();
+ if (screen->virtualSiblings().size() > 1)
+ std::cout << "\n " << screen->virtualSiblings().size() << " virtual siblings";
+ std::cout << "\n Physical size: " << screen->physicalSize() << " mm"
+ << " Refresh: " << screen->refreshRate() << " Hz"
+ << "\n Physical DPI: " << screen->physicalDotsPerInchX()
+ << ',' << screen->physicalDotsPerInchY()
+ << " Logical DPI: " << screen->logicalDotsPerInchX()
+ << ',' << screen->logicalDotsPerInchY()
+ << "\n DevicePixelRatio: " << screen->devicePixelRatio()
+ << " Primary orientation: " << screen->primaryOrientation()
+ << "\n Orientation: " << screen->orientation()
+ << " OrientationUpdateMask: " << screen->orientationUpdateMask()
+ << "\n\n";
+ }
+ return 0;
+}
diff --git a/tests/manual/qpainfo/qpainfo.pro b/tests/manual/qpainfo/qpainfo.pro
new file mode 100644
index 0000000000..374f951300
--- /dev/null
+++ b/tests/manual/qpainfo/qpainfo.pro
@@ -0,0 +1,7 @@
+TEMPLATE = app
+TARGET = qpainfo
+CONFIG+=console
+CONFIG -= app_bundle
+QT = core-private gui-private
+
+SOURCES += main.cpp
diff --git a/tests/manual/qtouchevent/touchwidget.cpp b/tests/manual/qtouchevent/touchwidget.cpp
index 68206aad22..e2834203f7 100644
--- a/tests/manual/qtouchevent/touchwidget.cpp
+++ b/tests/manual/qtouchevent/touchwidget.cpp
@@ -122,7 +122,7 @@ bool TouchWidget::event(QEvent *event)
case QEvent::MouseButtonRelease:
seenMouseRelease = true;
if (closeWindowOnMouseRelease)
- window()->close();
+ window()->close();
if (acceptMouseRelease) {
event->accept();
return true;
diff --git a/tests/manual/repaint/mainwindow/main.cpp b/tests/manual/repaint/mainwindow/main.cpp
index 173f81de06..eb3096a59c 100644
--- a/tests/manual/repaint/mainwindow/main.cpp
+++ b/tests/manual/repaint/mainwindow/main.cpp
@@ -47,16 +47,16 @@ int main(int argc, char **argv)
QApplication app(argc, argv);
QMainWindow mainWindow;
-
+
mainWindow.setCentralWidget(new StaticWidget());
mainWindow.setStatusBar(new QStatusBar());
-
+
QDockWidget *dockWidget = new QDockWidget();
dockWidget->setWidget(new StaticWidget());
mainWindow.addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
-
+
QToolBar *toolBar = new QToolBar();
-
+
toolBar->addWidget(new StaticWidget())->setVisible(true);;
toolBar->addWidget(new QSpinBox())->setVisible(true);;
@@ -64,6 +64,6 @@ int main(int argc, char **argv)
mainWindow.resize(600, 400);
mainWindow.show();
-
+
return app.exec();
}
diff --git a/tests/manual/repaint/scrollarea/main.cpp b/tests/manual/repaint/scrollarea/main.cpp
index 44b43c30f7..6102ab8ee8 100644
--- a/tests/manual/repaint/scrollarea/main.cpp
+++ b/tests/manual/repaint/scrollarea/main.cpp
@@ -42,7 +42,6 @@
#include <QtWidgets>
#include "../shared/shared.h"
-
int main(int argc, char **argv)
{
QApplication app(argc, argv);
@@ -57,8 +56,7 @@ int main(int argc, char **argv)
scrollView.resize(600, 400);
scrollView.show();
-
-
+
return app.exec();
}
diff --git a/tests/manual/repaint/splitter/main.cpp b/tests/manual/repaint/splitter/main.cpp
index 5ee1e19402..2c01053ae1 100644
--- a/tests/manual/repaint/splitter/main.cpp
+++ b/tests/manual/repaint/splitter/main.cpp
@@ -53,6 +53,6 @@ int main(int argc, char **argv)
splitter.resize(600, 400);
splitter.show();
-
+
return app.exec();
}
diff --git a/tests/manual/repaint/tableview/main.cpp b/tests/manual/repaint/tableview/main.cpp
index 442b1668e0..71f8209d6d 100644
--- a/tests/manual/repaint/tableview/main.cpp
+++ b/tests/manual/repaint/tableview/main.cpp
@@ -45,7 +45,7 @@
class CellWidget : public QWidget
{
public:
- CellWidget (QWidget *parent = 0) : QWidget(parent) { }
+ CellWidget(QWidget *parent = 0) : QWidget(parent) {}
void paintEvent(QPaintEvent * event)
{
static int value = 200;
@@ -69,8 +69,7 @@ int main(int argc, char **argv)
tableWidget.setCellWidget(row, col, new CellWidget());
tableWidget.resize(400, 600);
tableWidget.show();
-
-
+
return app.exec();
}
diff --git a/tests/manual/repaint/task141091/main.cpp b/tests/manual/repaint/task141091/main.cpp
index d2b0f76606..b5b6ae92d7 100644
--- a/tests/manual/repaint/task141091/main.cpp
+++ b/tests/manual/repaint/task141091/main.cpp
@@ -45,11 +45,12 @@
class MyWidget : public QWidget
{
public:
- MyWidget() : QWidget() {
-
-
+ MyWidget() : QWidget()
+ {
setAttribute(Qt::WA_OpaquePaintEvent);
- setAttribute(Qt::WA_StaticContents); }
+ setAttribute(Qt::WA_StaticContents);
+ }
+
protected:
void paintEvent(QPaintEvent *e) { qDebug() << e->rect(); }
};
@@ -60,4 +61,4 @@ int main(int argc, char **argv)
MyWidget w;
w.show();
return a.exec();
-} \ No newline at end of file
+}
diff --git a/tests/manual/repaint/widget/main.cpp b/tests/manual/repaint/widget/main.cpp
index 520b3e22f5..22011a160c 100644
--- a/tests/manual/repaint/widget/main.cpp
+++ b/tests/manual/repaint/widget/main.cpp
@@ -108,24 +108,24 @@ protected:
QPushButton * resizeButton;
QPushButton * movebutton;
QPushButton * moveResizebutton;
- QPushButton * scrollbutton;
+ QPushButton * scrollbutton;
};
int main(int argc, char **argv)
{
QApplication app(argc, argv);
-
+
TopLevel bc;
bc.resize(500, 500);
c = new Child(&bc);
c->move(100, 100);
c->resize(100, 100);
-
+
QWidget *gc = new StaticWidget(c);
gc->move(20, 20);
gc->resize(50,50);
-
+
bc.show();
return app.exec();
diff --git a/tests/manual/widgets/itemviews/qheaderview/qheaderviewtest1.cpp b/tests/manual/widgets/itemviews/qheaderview/qheaderviewtest1.cpp
index 7a8c1d159d..b5aeb023f4 100644
--- a/tests/manual/widgets/itemviews/qheaderview/qheaderviewtest1.cpp
+++ b/tests/manual/widgets/itemviews/qheaderview/qheaderviewtest1.cpp
@@ -99,6 +99,9 @@ int main(int argc, char *argv[])
m.setRowCount(500);
m.setColumnCount(250);
tv.setModel(&m);
+ tv.setSelectionMode(QAbstractItemView::SingleSelection);
+ // Comment in the line below to test selection with keyboard (space)
+ // tv.setEditTriggers(QAbstractItemView::NoEditTriggers);
SomeHandler handler(tv.horizontalHeader(), &tv);
tv.horizontalHeader()->setDefaultSectionSize(30);
tv.show();
diff --git a/tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp b/tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp
index 186203e7d8..aec2479239 100644
--- a/tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp
+++ b/tests/manual/widgets/qgraphicsview/rubberband/rubberbandtest.cpp
@@ -60,11 +60,12 @@ public:
class MyGraphicsView : public QGraphicsView
{
-
+ Q_OBJECT
public:
- MyGraphicsView() : QGraphicsView()
+ MyGraphicsView(QWidget *w, QLabel *l) : QGraphicsView(w), rubberbandLabel(l)
{
setDragMode(QGraphicsView::RubberBandDrag);
+ connect(this, SIGNAL(rubberBandChanged(QRect, QPointF, QPointF)), this, SLOT(updateRubberbandInfo(QRect, QPointF, QPointF)));
}
protected:
void mouseMoveEvent(QMouseEvent *event)
@@ -81,26 +82,46 @@ protected:
if (yglobal > bottomPos)
verticalScrollBar()->setValue(verticalScrollBar()->value() + 10);
}
+
+protected slots:
+ void updateRubberbandInfo(QRect r, QPointF from, QPointF to)
+ {
+ QString textToShow;
+ QDebug s(&textToShow);
+ s << r << from << to;
+ rubberbandLabel->setText(textToShow);
+ }
+protected:
+ QLabel *rubberbandLabel;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
- MyGraphicsView v;
+
+ QWidget w;
+ w.setLayout(new QVBoxLayout);
+ QLabel *l = new QLabel(&w);
+ MyGraphicsView *v = new MyGraphicsView(&w, l);
+
+ w.layout()->addWidget(v);
+ w.layout()->addWidget(l);
QGraphicsScene s(0.0, 0.0, 5000.0, 5000.0);
- v.setScene(&s);
- v.setInteractive(true);
- v.setRubberBandSelectionMode(Qt::IntersectsItemBoundingRect);
- s.addRect( (qreal) 0.0, 0.0, 1000.0, 50.0, QPen(),QBrush(QColor(0,0,255)));
+ v->setScene(&s);
+ v->setInteractive(true);
+ v->setRubberBandSelectionMode(Qt::IntersectsItemBoundingRect);
for (int u = 0; u < 100; ++u)
- for (int v = 0; v < 100; ++v) {
+ for (int n = 0; n < 100; ++n) {
MyGraphicsItem *item = new MyGraphicsItem();
- item->setRect(QRectF(v * 80.0, u * 80.0, 50.0, 20.0));
+ item->setRect(QRectF(n * 80.0, u * 80.0, 50.0, 20.0));
s.addItem(item);
}
- v.show();
+
+ w.show();
app.exec();
return 0;
}
+
+#include "rubberbandtest.moc"
diff --git a/tests/manual/windowflags/controls.cpp b/tests/manual/windowflags/controls.cpp
index cad84617fc..422656ff03 100644
--- a/tests/manual/windowflags/controls.cpp
+++ b/tests/manual/windowflags/controls.cpp
@@ -123,8 +123,10 @@ Qt::WindowFlags HintControl::hints() const
flags |= Qt::WindowMinimizeButtonHint;
if (windowMaximizeButtonCheckBox->isChecked())
flags |= Qt::WindowMaximizeButtonHint;
+#if QT_VERSION >= 0x050000
if (windowFullscreenButtonCheckBox->isChecked())
flags |= Qt::WindowFullscreenButtonHint;
+#endif
if (windowCloseButtonCheckBox->isChecked())
flags |= Qt::WindowCloseButtonHint;
if (windowContextHelpButtonCheckBox->isChecked())
@@ -153,7 +155,9 @@ void HintControl::setHints(Qt::WindowFlags flags)
windowSystemMenuCheckBox->setChecked(flags & Qt::WindowSystemMenuHint);
windowMinimizeButtonCheckBox->setChecked(flags & Qt::WindowMinimizeButtonHint);
windowMaximizeButtonCheckBox->setChecked(flags & Qt::WindowMaximizeButtonHint);
+#if QT_VERSION >= 0x050000
windowFullscreenButtonCheckBox->setChecked(flags & Qt::WindowFullscreenButtonHint);
+#endif
windowCloseButtonCheckBox->setChecked(flags & Qt::WindowCloseButtonHint);
windowContextHelpButtonCheckBox->setChecked(flags & Qt::WindowContextHelpButtonHint);
windowShadeButtonCheckBox->setChecked(flags & Qt::WindowShadeButtonHint);
diff --git a/tests/manual/windowgeometry/controllerwidget.cpp b/tests/manual/windowgeometry/controllerwidget.cpp
index 8340b90654..d8c74ef8a3 100644
--- a/tests/manual/windowgeometry/controllerwidget.cpp
+++ b/tests/manual/windowgeometry/controllerwidget.cpp
@@ -311,7 +311,7 @@ public:
, m_backingStore(new QBackingStore(this))
{
setObjectName(QStringLiteral("window"));
- setWindowTitle(tr("TestWindow"));
+ setTitle(tr("TestWindow"));
}
protected:
@@ -363,9 +363,9 @@ private:
virtual QPoint objectMapToGlobal(const QObject *o, const QPoint &p) const
{ return static_cast<const QWindow *>(o)->mapToGlobal(p); }
virtual Qt::WindowFlags objectWindowFlags(const QObject *o) const
- { return static_cast<const QWindow *>(o)->windowFlags(); }
+ { return static_cast<const QWindow *>(o)->flags(); }
virtual void setObjectWindowFlags(QObject *o, Qt::WindowFlags f)
- { static_cast<QWindow *>(o)->setWindowFlags(f); }
+ { static_cast<QWindow *>(o)->setFlags(f); }
WindowStateControl *m_stateControl;
};
@@ -374,7 +374,7 @@ WindowControl::WindowControl(QWindow *w )
: BaseWindowControl(w)
, m_stateControl(new WindowStateControl(WindowStateControl::WantVisibleCheckBox | WindowStateControl::WantMinimizeRadioButton))
{
- setTitle(w->windowTitle());
+ setTitle(w->title());
QGroupBox *stateGroupBox = new QGroupBox(tr("State"));
QVBoxLayout *l = new QVBoxLayout(stateGroupBox);
l->addWidget(m_stateControl);
@@ -454,7 +454,7 @@ ControllerWidget::ControllerWidget(QWidget *parent)
#if QT_VERSION >= 0x050000
x += 300;
- m_testWindow->setWindowFlags(Qt::Window | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint
+ m_testWindow->setFlags(Qt::Window | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint
| Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint
| Qt::WindowTitleHint | Qt::WindowFullscreenButtonHint);
m_testWindow->setFramePosition(QPoint(x, y));
@@ -467,7 +467,7 @@ ControllerWidget::ControllerWidget(QWidget *parent)
m_testWindow->showFullScreen();
else
m_testWindow->show();
- m_testWindow->setWindowTitle(tr("TestWindow"));
+ m_testWindow->setTitle(tr("TestWindow"));
#endif
QWidget *central = new QWidget ;
diff --git a/tests/manual/xembed-raster/gtk-embedder.py b/tests/manual/xembed-raster/gtk-embedder.py
new file mode 100755
index 0000000000..bd19789f84
--- /dev/null
+++ b/tests/manual/xembed-raster/gtk-embedder.py
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+#############################################################################
+##
+## Copyright (C) 2013 Canonical Ltd.
+## Contact: http://www.qt-project.org/legal
+##
+## This file is part of the test suite 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$
+##
+#############################################################################
+
+from gi.repository import Gtk
+from subprocess import Popen
+
+window = Gtk.Window()
+
+box = Gtk.VBox(False, 0)
+window.add(box)
+
+child = None
+def on_button_clicked(button, socket):
+ global child
+ child = Popen(['./rasterwindow', str(socket.get_id())])
+
+button = Gtk.Button("Press me to embed a Qt client")
+box.pack_start(button, False, False, 0)
+
+socket = Gtk.Socket()
+socket.set_size_request(200, 200)
+box.add(socket)
+
+button.connect("clicked", on_button_clicked, socket)
+window.connect("destroy", Gtk.main_quit)
+
+def plugged_event(widget):
+ print("A window was embedded!")
+
+socket.connect("plug-added", plugged_event)
+
+window.show_all()
+Gtk.main()
+if child:
+ child.terminate()
diff --git a/tests/manual/xembed-raster/main.cpp b/tests/manual/xembed-raster/main.cpp
new file mode 100644
index 0000000000..dc5fb8a5ca
--- /dev/null
+++ b/tests/manual/xembed-raster/main.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 "rasterwindow.h"
+#include <QDebug>
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+
+ QStringList args = app.arguments();
+
+ WId winId = 0;
+ if (args.count() > 1) {
+ bool ok;
+ winId = args[1].toUInt(&ok);
+ Q_ASSERT(ok);
+ }
+
+ RasterWindow window;
+ window.show();
+
+ QWindow *foreign = QWindow::fromWinId(winId);
+ Q_ASSERT(foreign != 0);
+
+ window.setParent(foreign);
+
+ return app.exec();
+}
diff --git a/tests/manual/xembed-raster/rasterwindow.cpp b/tests/manual/xembed-raster/rasterwindow.cpp
new file mode 100644
index 0000000000..cad5081280
--- /dev/null
+++ b/tests/manual/xembed-raster/rasterwindow.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 "rasterwindow.h"
+
+RasterWindow::RasterWindow(QWindow *parent)
+ : QWindow(parent)
+ , m_update_pending(false)
+{
+ m_backingStore = new QBackingStore(this);
+ create();
+
+ setGeometry(100, 100, 300, 200);
+}
+
+
+bool RasterWindow::event(QEvent *event)
+{
+ if (event->type() == QEvent::UpdateRequest) {
+ m_update_pending = false;
+ renderNow();
+ return true;
+ }
+ return QWindow::event(event);
+}
+
+void RasterWindow::renderLater()
+{
+ if (!m_update_pending) {
+ m_update_pending = true;
+ QCoreApplication::postEvent(this, new QEvent(QEvent::UpdateRequest));
+ }
+}
+
+void RasterWindow::resizeEvent(QResizeEvent *resizeEvent)
+{
+ m_backingStore->resize(resizeEvent->size());
+ if (isExposed())
+ renderNow();
+}
+
+void RasterWindow::exposeEvent(QExposeEvent *)
+{
+ if (isExposed()) {
+ renderNow();
+ }
+}
+
+void RasterWindow::renderNow()
+{
+ if (!isExposed())
+ return;
+
+ QRect rect(0, 0, width(), height());
+ m_backingStore->beginPaint(rect);
+
+ QPaintDevice *device = m_backingStore->paintDevice();
+ QPainter painter(device);
+
+ painter.fillRect(0, 0, width(), height(), Qt::white);
+ render(&painter);
+
+ m_backingStore->endPaint();
+ m_backingStore->flush(rect);
+}
+
+void RasterWindow::render(QPainter *painter)
+{
+ painter->drawText(QRectF(0, 0, width(), height()), Qt::AlignCenter, QStringLiteral("QWindow"));
+}
diff --git a/tests/manual/xembed-raster/rasterwindow.h b/tests/manual/xembed-raster/rasterwindow.h
new file mode 100644
index 0000000000..3fed06d7de
--- /dev/null
+++ b/tests/manual/xembed-raster/rasterwindow.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 examples 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$
+**
+****************************************************************************/
+
+#ifndef RASTERWINDOW_H
+#define RASTERWINDOW_H
+
+#include <QtGui>
+
+class RasterWindow : public QWindow
+{
+ Q_OBJECT
+public:
+ explicit RasterWindow(QWindow *parent = 0);
+
+ virtual void render(QPainter *painter);
+
+public slots:
+ void renderLater();
+ void renderNow();
+
+protected:
+ bool event(QEvent *event);
+
+ void resizeEvent(QResizeEvent *event);
+ void exposeEvent(QExposeEvent *event);
+
+private:
+ QBackingStore *m_backingStore;
+ bool m_update_pending;
+};
+
+#endif // RASTERWINDOW_H
diff --git a/tests/manual/xembed-raster/xembed-raster.pro b/tests/manual/xembed-raster/xembed-raster.pro
new file mode 100644
index 0000000000..adaf9c4d25
--- /dev/null
+++ b/tests/manual/xembed-raster/xembed-raster.pro
@@ -0,0 +1,9 @@
+TEMPLATE = app
+TARGET= rasterwindow
+QT += gui
+
+SOURCES += \
+ main.cpp \
+ rasterwindow.cpp
+HEADERS += \
+ rasterwindow.h
diff --git a/tests/manual/xembed-widgets/gtk-embedder.py b/tests/manual/xembed-widgets/gtk-embedder.py
new file mode 100755
index 0000000000..bcb9813441
--- /dev/null
+++ b/tests/manual/xembed-widgets/gtk-embedder.py
@@ -0,0 +1,77 @@
+#!/usr/bin/python
+#############################################################################
+##
+## Copyright (C) 2013 Canonical Ltd.
+## Contact: http://www.qt-project.org/legal
+##
+## This file is part of the test suite 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$
+##
+#############################################################################
+
+from gi.repository import Gtk
+from subprocess import Popen
+
+window = Gtk.Window()
+
+box = Gtk.VBox(False, 0)
+window.add(box)
+
+child = None
+def on_button_clicked(button, socket):
+ global child
+ child = Popen(['./lineedits', str(socket.get_id())])
+
+button = Gtk.Button("Press me to embed a Qt client")
+box.pack_start(button, False, False, 0)
+
+entry = Gtk.Entry()
+box.pack_start(entry, False, False, 0)
+
+socket = Gtk.Socket()
+socket.set_size_request(200, 200)
+box.add(socket)
+
+button.connect("clicked", on_button_clicked, socket)
+window.connect("destroy", Gtk.main_quit)
+
+def plugged_event(widget):
+ print("A window was embedded!")
+
+socket.connect("plug-added", plugged_event)
+
+window.show_all()
+Gtk.main()
+if child:
+ child.terminate()
diff --git a/tests/manual/xembed-widgets/main.cpp b/tests/manual/xembed-widgets/main.cpp
new file mode 100644
index 0000000000..fbd9773b61
--- /dev/null
+++ b/tests/manual/xembed-widgets/main.cpp
@@ -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 examples 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 <QApplication>
+#include <QDebug>
+#include <QWindow>
+
+#include "window.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ QStringList args = app.arguments();
+
+ WId winId = 0;
+ if (args.count() > 1) {
+ bool ok;
+ winId = args[1].toUInt(&ok);
+ Q_ASSERT(ok);
+ }
+
+ Window window;
+ window.show();
+
+ QWindow *foreign = QWindow::fromWinId(winId);
+ Q_ASSERT(foreign != 0);
+
+ window.windowHandle()->setParent(foreign);
+
+ return app.exec();
+}
diff --git a/tests/manual/xembed-widgets/window.cpp b/tests/manual/xembed-widgets/window.cpp
new file mode 100644
index 0000000000..92eccf50ba
--- /dev/null
+++ b/tests/manual/xembed-widgets/window.cpp
@@ -0,0 +1,228 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the examples 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 <QtWidgets>
+
+#include "window.h"
+
+Window::Window()
+{
+ QGroupBox *echoGroup = new QGroupBox(tr("Echo"));
+
+ QLabel *echoLabel = new QLabel(tr("Mode:"));
+ QComboBox *echoComboBox = new QComboBox;
+ echoComboBox->addItem(tr("Normal"));
+ echoComboBox->addItem(tr("Password"));
+ echoComboBox->addItem(tr("PasswordEchoOnEdit"));
+ echoComboBox->addItem(tr("No Echo"));
+
+ echoLineEdit = new QLineEdit;
+ echoLineEdit->setFocus();
+
+ QGroupBox *validatorGroup = new QGroupBox(tr("Validator"));
+
+ QLabel *validatorLabel = new QLabel(tr("Type:"));
+ QComboBox *validatorComboBox = new QComboBox;
+ validatorComboBox->addItem(tr("No validator"));
+ validatorComboBox->addItem(tr("Integer validator"));
+ validatorComboBox->addItem(tr("Double validator"));
+
+ validatorLineEdit = new QLineEdit;
+
+ QGroupBox *alignmentGroup = new QGroupBox(tr("Alignment"));
+
+ QLabel *alignmentLabel = new QLabel(tr("Type:"));
+ QComboBox *alignmentComboBox = new QComboBox;
+ alignmentComboBox->addItem(tr("Left"));
+ alignmentComboBox->addItem(tr("Centered"));
+ alignmentComboBox->addItem(tr("Right"));
+
+ alignmentLineEdit = new QLineEdit;
+
+ QGroupBox *inputMaskGroup = new QGroupBox(tr("Input mask"));
+
+ QLabel *inputMaskLabel = new QLabel(tr("Type:"));
+ QComboBox *inputMaskComboBox = new QComboBox;
+ inputMaskComboBox->addItem(tr("No mask"));
+ inputMaskComboBox->addItem(tr("Phone number"));
+ inputMaskComboBox->addItem(tr("ISO date"));
+ inputMaskComboBox->addItem(tr("License key"));
+
+ inputMaskLineEdit = new QLineEdit;
+
+ QGroupBox *accessGroup = new QGroupBox(tr("Access"));
+
+ QLabel *accessLabel = new QLabel(tr("Read-only:"));
+ QComboBox *accessComboBox = new QComboBox;
+ accessComboBox->addItem(tr("False"));
+ accessComboBox->addItem(tr("True"));
+
+ accessLineEdit = new QLineEdit;
+
+ connect(echoComboBox, SIGNAL(activated(int)),
+ this, SLOT(echoChanged(int)));
+ connect(validatorComboBox, SIGNAL(activated(int)),
+ this, SLOT(validatorChanged(int)));
+ connect(alignmentComboBox, SIGNAL(activated(int)),
+ this, SLOT(alignmentChanged(int)));
+ connect(inputMaskComboBox, SIGNAL(activated(int)),
+ this, SLOT(inputMaskChanged(int)));
+ connect(accessComboBox, SIGNAL(activated(int)),
+ this, SLOT(accessChanged(int)));
+
+ QGridLayout *echoLayout = new QGridLayout;
+ echoLayout->addWidget(echoLabel, 0, 0);
+ echoLayout->addWidget(echoComboBox, 0, 1);
+ echoLayout->addWidget(echoLineEdit, 1, 0, 1, 2);
+ echoGroup->setLayout(echoLayout);
+
+ QGridLayout *validatorLayout = new QGridLayout;
+ validatorLayout->addWidget(validatorLabel, 0, 0);
+ validatorLayout->addWidget(validatorComboBox, 0, 1);
+ validatorLayout->addWidget(validatorLineEdit, 1, 0, 1, 2);
+ validatorGroup->setLayout(validatorLayout);
+
+ QGridLayout *alignmentLayout = new QGridLayout;
+ alignmentLayout->addWidget(alignmentLabel, 0, 0);
+ alignmentLayout->addWidget(alignmentComboBox, 0, 1);
+ alignmentLayout->addWidget(alignmentLineEdit, 1, 0, 1, 2);
+ alignmentGroup-> setLayout(alignmentLayout);
+
+ QGridLayout *inputMaskLayout = new QGridLayout;
+ inputMaskLayout->addWidget(inputMaskLabel, 0, 0);
+ inputMaskLayout->addWidget(inputMaskComboBox, 0, 1);
+ inputMaskLayout->addWidget(inputMaskLineEdit, 1, 0, 1, 2);
+ inputMaskGroup->setLayout(inputMaskLayout);
+
+ QGridLayout *accessLayout = new QGridLayout;
+ accessLayout->addWidget(accessLabel, 0, 0);
+ accessLayout->addWidget(accessComboBox, 0, 1);
+ accessLayout->addWidget(accessLineEdit, 1, 0, 1, 2);
+ accessGroup->setLayout(accessLayout);
+
+ QGridLayout *layout = new QGridLayout;
+ layout->addWidget(echoGroup, 0, 0);
+ layout->addWidget(validatorGroup, 1, 0);
+ layout->addWidget(alignmentGroup, 2, 0);
+ layout->addWidget(inputMaskGroup, 0, 1);
+ layout->addWidget(accessGroup, 1, 1);
+ setLayout(layout);
+
+ setWindowTitle(tr("Line Edits"));
+}
+
+void Window::echoChanged(int index)
+{
+ switch (index) {
+ case 0:
+ echoLineEdit->setEchoMode(QLineEdit::Normal);
+ break;
+ case 1:
+ echoLineEdit->setEchoMode(QLineEdit::Password);
+ break;
+ case 2:
+ echoLineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);
+ break;
+ case 3:
+ echoLineEdit->setEchoMode(QLineEdit::NoEcho);
+ }
+}
+
+void Window::validatorChanged(int index)
+{
+ switch (index) {
+ case 0:
+ validatorLineEdit->setValidator(0);
+ break;
+ case 1:
+ validatorLineEdit->setValidator(new QIntValidator(
+ validatorLineEdit));
+ break;
+ case 2:
+ validatorLineEdit->setValidator(new QDoubleValidator(-999.0,
+ 999.0, 2, validatorLineEdit));
+ }
+
+ validatorLineEdit->clear();
+}
+
+void Window::alignmentChanged(int index)
+{
+ switch (index) {
+ case 0:
+ alignmentLineEdit->setAlignment(Qt::AlignLeft);
+ break;
+ case 1:
+ alignmentLineEdit->setAlignment(Qt::AlignCenter);
+ break;
+ case 2:
+ alignmentLineEdit->setAlignment(Qt::AlignRight);
+ }
+}
+
+void Window::inputMaskChanged(int index)
+{
+ switch (index) {
+ case 0:
+ inputMaskLineEdit->setInputMask("");
+ break;
+ case 1:
+ inputMaskLineEdit->setInputMask("+99 99 99 99 99;_");
+ break;
+ case 2:
+ inputMaskLineEdit->setInputMask("0000-00-00");
+ inputMaskLineEdit->setText("00000000");
+ inputMaskLineEdit->setCursorPosition(0);
+ break;
+ case 3:
+ inputMaskLineEdit->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#");
+ }
+}
+
+void Window::accessChanged(int index)
+{
+ switch (index) {
+ case 0:
+ accessLineEdit->setReadOnly(false);
+ break;
+ case 1:
+ accessLineEdit->setReadOnly(true);
+ }
+}
diff --git a/tests/manual/xembed-widgets/window.h b/tests/manual/xembed-widgets/window.h
new file mode 100644
index 0000000000..fbb9b82300
--- /dev/null
+++ b/tests/manual/xembed-widgets/window.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 examples 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$
+**
+****************************************************************************/
+
+#ifndef WINDOW_H
+#define WINDOW_H
+
+#include <QWidget>
+
+QT_BEGIN_NAMESPACE
+class QComboBox;
+class QLineEdit;
+QT_END_NAMESPACE
+
+class Window : public QWidget
+{
+ Q_OBJECT
+
+public:
+ Window();
+
+public slots:
+ void echoChanged(int);
+ void validatorChanged(int);
+ void alignmentChanged(int);
+ void inputMaskChanged(int);
+ void accessChanged(int);
+
+private:
+ QLineEdit *echoLineEdit;
+ QLineEdit *validatorLineEdit;
+ QLineEdit *alignmentLineEdit;
+ QLineEdit *inputMaskLineEdit;
+ QLineEdit *accessLineEdit;
+};
+
+#endif
diff --git a/tests/manual/xembed-widgets/xembed-widgets.pro b/tests/manual/xembed-widgets/xembed-widgets.pro
new file mode 100644
index 0000000000..e406ee47fd
--- /dev/null
+++ b/tests/manual/xembed-widgets/xembed-widgets.pro
@@ -0,0 +1,9 @@
+TEMPLATE = app
+TARGET= lineedits
+QT += widgets
+
+SOURCES += \
+ main.cpp \
+ window.cpp
+HEADERS += \
+ window.h
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 5ff4a67315..55ac3d997a 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2013 Intel Corporation
** Contact: http://www.qt-project.org/legal
**
** This file is part of the tools applications of the Qt Toolkit.
@@ -244,6 +245,7 @@ Configure::Configure(int& argc, char** argv)
dictionary[ "CFG_GCC_SYSROOT" ] = "yes";
dictionary[ "SLOG2" ] = "no";
dictionary[ "SYSTEM_PROXIES" ] = "no";
+ dictionary[ "WERROR" ] = "auto";
//Only used when cross compiling.
dictionary[ "QT_INSTALL_SETTINGS" ] = "/etc/xdg";
@@ -891,6 +893,11 @@ void Configure::parseCmdLine()
dictionary[ "SYSTEM_PROXIES" ] = "no";
} else if (configCmdLine.at(i) == "-system-proxies") {
dictionary[ "SYSTEM_PROXIES" ] = "yes";
+ } else if (configCmdLine.at(i) == "-warnings-are-errors" ||
+ configCmdLine.at(i) == "-Werror") {
+ dictionary[ "WERROR" ] = "yes";
+ } else if (configCmdLine.at(i) == "-no-warnings-are-errors") {
+ dictionary[ "WERROR" ] = "no";
}
// Work around compiler nesting limitation
@@ -1291,7 +1298,7 @@ void Configure::parseCmdLine()
dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32";
} else if (dictionary[ "QMAKESPEC" ] == QString("win32-g++")) {
if (dictionary[ "MAKE" ].isEmpty()) dictionary[ "MAKE" ] = "mingw32-make";
- dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32-g++";
+ dictionary[ "QMAKEMAKEFILE" ] = "Makefile.unix";
} else {
if (dictionary[ "MAKE" ].isEmpty()) dictionary[ "MAKE" ] = "make";
dictionary[ "QMAKEMAKEFILE" ] = "Makefile.win32";
@@ -1361,8 +1368,14 @@ void Configure::parseCmdLine()
}
// Allow tests for private classes to be compiled against internal builds
- if (dictionary["BUILDDEV"] == "yes")
- qtConfig += "private_tests";
+ if (dictionary["BUILDDEV"] == "yes") {
+ qtConfig << "private_tests";
+ if (dictionary["WERROR"] != "no")
+ qmakeConfig << "warnings_are_errors";
+ } else {
+ if (dictionary["WERROR"] == "yes")
+ qmakeConfig << "warnings_are_errors";
+ }
if (dictionary["FORCE_ASSERTS"] == "yes")
qtConfig += "force_asserts";
@@ -1734,6 +1747,8 @@ bool Configure::displayHelp()
desc("SYSTEM_PROXIES", "yes", "-system-proxies", "Use system network proxies by default.");
desc("SYSTEM_PROXIES", "no", "-no-system-proxies", "Do not use system network proxies by default.\n");
+ desc("WERROR", "yes", "-warnings-are-errors", "Make warnings be treated as errors.");
+ desc("WERROR", "no", "-no-warnings-are-errors","Make warnings be treated normally.");
#if !defined(EVAL)
desc( "-qtnamespace <name>", "Wraps all Qt library code in 'namespace name {...}'.");
@@ -3707,12 +3722,64 @@ void Configure::buildQmake()
stream << "#AutoGenerated by configure.exe" << endl
<< "BUILD_PATH = " << QDir::toNativeSeparators(buildPath) << endl
<< "SOURCE_PATH = " << QDir::toNativeSeparators(sourcePath) << endl;
- stream << "QMAKESPEC = " << dictionary["QMAKESPEC"] << endl
- << "QT_VERSION = " << dictionary["VERSION"] << endl;
-
+ stream << "QT_VERSION = " << dictionary["VERSION"] << endl;
+ if (dictionary[ "QMAKESPEC" ] == QString("win32-g++")) {
+ stream << "QMAKESPEC = $(SOURCE_PATH)\\mkspecs\\win32-g++" << endl
+ << "EXTRA_CFLAGS = -DUNICODE" << endl
+ << "EXTRA_CXXFLAGS = -DUNICODE" << endl
+ << "QTOBJS = qfilesystemengine_win.o \\" << endl
+ << " qfilesystemiterator_win.o \\" << endl
+ << " qfsfileengine_win.o \\" << endl
+ << " qlocale_win.o \\" << endl
+ << " qsettings_win.o \\" << endl
+ << " qsystemlibrary.o \\" << endl
+ << " registry.o" << endl
+ << "QTSRCS=\"$(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp\" \\" << endl\
+ << " \"$(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp\" \\" << endl
+ << " \"$(SOURCE_PATH)/tools/shared/windows/registry.cpp\"" << endl
+ << "EXEEXT=.exe" << endl
+ << "LFLAGS=-static -s -lole32 -luuid -ladvapi32 -lkernel32" << endl;
+ /*
+ ** SHELL is the full path of sh.exe, unless
+ ** 1) it is found in the current directory
+ ** 2) it is not found at all
+ ** 3) it is overridden on the command line with an existing file
+ ** ... otherwise it is always sh.exe. Specifically, SHELL from the
+ ** environment has no effect.
+ **
+ ** This check will fail if SHELL is explicitly set to a not
+ ** sh-compatible shell. This is not a problem, because configure.bat
+ ** will not do that.
+ */
+ stream << "ifeq ($(SHELL), sh.exe)" << endl
+ << " ifeq ($(wildcard $(CURDIR)/sh.exe), )" << endl
+ << " SH = 0" << endl
+ << " else" << endl
+ << " SH = 1" << endl
+ << " endif" << endl
+ << "else" << endl
+ << " SH = 1" << endl
+ << "endif" << endl
+ << "\n"
+ << "ifeq ($(SH), 1)" << endl
+ << " RM_F = rm -f" << endl
+ << " RM_RF = rm -rf" << endl
+ << "else" << endl
+ << " RM_F = del /f" << endl
+ << " RM_RF = rmdir /s /q" << endl
+ << "endif" << endl;
+ stream << "\n\n";
+ } else {
+ stream << "QMAKESPEC = " << dictionary["QMAKESPEC"] << endl;
+ }
if (dictionary["EDITION"] == "OpenSource" ||
dictionary["QT_EDITION"].contains("OPENSOURCE"))
- stream << "QMAKE_OPENSOURCE_EDITION = yes" << endl;
+ stream << "EXTRA_CPPFLAGS = -DQMAKE_OPENSOURCE_EDITION" << endl;
+
stream << "\n\n";
QFile in(sourcePath + "/qmake/" + dictionary["QMAKEMAKEFILE"]);
diff --git a/util/corelib/qurl-generateTLDs/main.cpp b/util/corelib/qurl-generateTLDs/main.cpp
index 0d7a58dee1..1809ced808 100644
--- a/util/corelib/qurl-generateTLDs/main.cpp
+++ b/util/corelib/qurl-generateTLDs/main.cpp
@@ -121,12 +121,14 @@ int main(int argc, char **argv) {
outIndicesBuffer.write("static const quint16 tldCount = ");
outIndicesBuffer.write(QByteArray::number(lineCount));
outIndicesBuffer.write(";\n");
- outIndicesBuffer.write("static const quint16 tldIndices[");
+ outIndicesBuffer.write("static const quint32 tldIndices[");
// outIndicesBuffer.write(QByteArray::number(lineCount+1)); // not needed
outIndicesBuffer.write("] = {\n");
- int utf8Size = 0;
-// int charSize = 0;
+ int totalUtf8Size = 0;
+ int chunkSize = 0;
+ int stringUtf8Size = 0;
+ QStringList chunks;
for (int a = 0; a < lineCount; a++) {
bool lineIsEmpty = strings.at(a).isEmpty();
if (!lineIsEmpty) {
@@ -136,25 +138,41 @@ int main(int argc, char **argv) {
int zeroCount = strings.at(a).count(QLatin1String("\\0"));
int utf8CharsCount = strings.at(a).count(QLatin1String("\\x"));
int quoteCount = strings.at(a).count('"');
+ stringUtf8Size = strings.at(a).count() - (zeroCount + quoteCount + utf8CharsCount * 3);
+ chunkSize += stringUtf8Size;
+ if (chunkSize > 65535) {
+ static int chunkCount = 0;
+ qWarning() << "chunk" << ++chunkCount << "has length" << chunkSize - stringUtf8Size;
+ outDataBuffer.write(",\n\n");
+ chunks.append(QByteArray::number(totalUtf8Size));
+ chunkSize = 0;
+ }
outDataBuffer.write(strings.at(a).toUtf8());
if (!lineIsEmpty)
outDataBuffer.write("\n");
- outIndicesBuffer.write(QByteArray::number(utf8Size));
+ outIndicesBuffer.write(QByteArray::number(totalUtf8Size));
outIndicesBuffer.write(",\n");
- utf8Size += strings.at(a).count() - (zeroCount + quoteCount + utf8CharsCount * 3);
-// charSize += strings.at(a).count();
+ totalUtf8Size += stringUtf8Size;
}
- outIndicesBuffer.write(QByteArray::number(utf8Size));
+ chunks.append(QByteArray::number(totalUtf8Size));
+ outIndicesBuffer.write(QByteArray::number(totalUtf8Size));
outIndicesBuffer.write("};\n");
outIndicesBuffer.close();
outFile.write(outIndicesBufferBA);
outDataBuffer.close();
- outFile.write("\nstatic const char tldData[");
+ outFile.write("\nstatic const char *tldData[");
// outFile.write(QByteArray::number(charSize)); // not needed
outFile.write("] = {\n");
outFile.write(outDataBufferBA);
outFile.write("};\n");
+
+ // write chunk information
+ outFile.write("\nstatic const quint16 tldChunkCount = ");
+ outFile.write(QByteArray::number(chunks.count()));
+ outFile.write(";\nstatic const quint32 tldChunks[] = {");
+ outFile.write(chunks.join(", ").toLatin1());
+ outFile.write("};\n");
outFile.close();
printf("data generated to %s . Now copy the data from this file to src/corelib/io/qurltlds_p.h in your Qt repo\n", argv[2]);
exit(0);
diff --git a/util/glgen/README.txt b/util/glgen/README.txt
new file mode 100644
index 0000000000..ea2411f619
--- /dev/null
+++ b/util/glgen/README.txt
@@ -0,0 +1,151 @@
+Overview
+========
+
+This is the glgen application used to generate OpenGL related classes from the
+official Khronos OpenGL specification and typemap files.
+
+To run this application download the gl.spec and gl.tm files from:
+
+http://www.opengl.org/registry/api/gl.spec
+http://www.opengl.org/registry/api/gl.tm
+
+and place them into the application directory. These files are not stored in
+the Qt Project's git repo or downloaded automatically to
+
+a) avoid copyright issues
+b) make sure the version of OpenGL used is controlled by a human
+
+The glgen application parses these files and generates:
+
+1) A set of public classes, one for each combination of OpenGL version and profile.
+2) A set of backend helper classes that contain the actual function pointers
+3) A factory class for the classes in 1)
+4) A set of classes, one for each OpenGL extension which introduces new entry points
+
+We will now describe each of these categories.
+
+
+OpenGL Version and Profile Classes
+==================================
+
+The base class of this set is QAbstractOpenGLFunctions. From this we inherit one class
+for each OpenGL version and if supported, profile.
+
+The Core profile contains only the non-deprecated functionality. The Compatibility profile
+also includes all functionality that was removed in OpenGL 3.1. Therefore, for OpenGL
+3.2 onwards we have two classes for each version.
+
+All of these classes are named with the following convention:
+
+QOpenGLFunctions_<MAJOR>_<MINOR>[_PROFILE]
+
+For example QOpenGLFunctions_2_1, QOpenGLFunctions_4_3_Core
+
+The source and header files for these classes take the form
+
+qopenglfunction_<MAJOR>_<MINOR>[_PROFILE].cpp
+qopenglfunction_<MAJOR>_<MINOR>[_PROFILE].h
+
+and should be moved to
+
+$QTBASE/src/gui/opengl/
+
+and forms part of the public QtGui library API.
+
+
+Backend Helper Classes
+======================
+
+Every OpenGL function is categorised by which version it was introduced with and
+whether it is part of the Core Profile and is deemed part of the core specification
+or whther it is only part of the Compatibility profile and has been marked as
+deprecated.
+
+Glgen creates a backend helper class containing function pointers to match each
+possible case. E.g. QOpenGLFunctions_1_5_CoreBackend contains functions introduced
+in OpenGL 1.5 which are still core (not deprecated).
+
+The public frontend classes described above contain pointers to the set of backend
+objects necessary to implement the functions for their version and profile.
+
+Creating new instances of these backend objects for each public version functions
+object would be wasteful in terms of memory (repeated function pointers) and CPU
+time (no need to keep re-solving the same functions).
+
+We cannot share the backend objects globally as OpenGL entry point addresses are
+specific to the OpenGL context. They cannot even be reliably shared between a
+context group. This is not surprising if you consider the case of contexts in a share
+group where the contexts have different versions or even profiles. We therefore share
+the backend instances at the QOpenGLContext level using a simple reference counting
+scheme.
+
+When the frontend version functions objects are intialized they check to see if
+the associated context already has suitable backend objects available. If so they use
+them, otherwise they will create backend objects and associate them with the context.
+
+The backend classes are in
+
+qopenglversionfunctions.h
+qopenglversionfunctions.cpp
+
+and should also be moved to
+
+$QTBASE/src/gui/opengl/
+
+
+OpenGL Version and Profile Factory
+==================================
+
+Instances of the OpenGL version and profile classes described above can be obtained
+from QOpenGLContext by means of the versionFunctions() member. The OpenGLContext
+retains ownership of the QOpenGLFunctions_* object. If a suitable object does not
+already exist it is created by the factory class generated by glgen.
+
+It is possible to request version functions objects for any version/profile
+combination from a context. However not all requests can be serviced. For example
+consider the case of an OpenGL 3.3 Core profile context. In this case:
+
+* Requesting a 3.3 core profile functions object would succeed.
+* Requesting a 3.3 compatibility profile functions object would fail. We would fail
+ to resolve the deprecated functions.
+* 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.
+* Requesting a 3.1 functions object would succeed. There is nothing in 3.1 that is not
+ also in 3.3 core.
+
+If a request is not able to be serviced the factory, and hence QOpenGLContext::versionFunctions()
+will return a null pointer that can be checked for.
+
+The source and header file for this class should be moved to
+
+$QTBASE/src/gui/opengl/
+
+and forms part of the QtGui library.
+
+If a user instantiates a version functions object directly (i.e. not via QOpenGLContext)
+then it bypasses the above checks. However, the same checks are applied in the
+initializeOpenGLFunctions() method and the result can once again be checked.
+
+This approach allows maximum flexibility but ensure's safety in that once the user
+posesses a functions object that has been successfully initialized they can rely upon its
+member functions being successfully resolved.
+
+
+OpenGL Extension Classes
+========================
+
+In addition, glgen also creates one class for each OpenGL extension that introduces
+new entry points. These classes are named with the convention
+
+QOpenGLExtension_<name-of-extension>
+
+The usage pattern for OpenGL extensions is to just use a small
+number of extensions out of the large number of those available.
+
+Rather than bloat QtGui with all possible extensions, a new static library will be
+introduced to hold these classes. That way users will only link in the code for
+the extensions that they actually use.
+
+The source and header file for these classes should be moved to
+
+$QTBASE/src/openglextensions/ \ No newline at end of file
diff --git a/util/glgen/codegenerator.cpp b/util/glgen/codegenerator.cpp
new file mode 100644
index 0000000000..c6a77569dc
--- /dev/null
+++ b/util/glgen/codegenerator.cpp
@@ -0,0 +1,1099 @@
+/***************************************************************************
+**
+** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB)
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the utilities 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 "codegenerator.h"
+
+#include <QDebug>
+#include <QFile>
+#include <QSettings>
+#include <QTextStream>
+
+static const QString extensionRegistryFileName = QStringLiteral("qopengl-extension-registry.ini");
+static const QString extensionIdGroupName = QStringLiteral("ExtensionIds");
+
+CodeGenerator::CodeGenerator()
+ : m_parser(0)
+{
+}
+
+void CodeGenerator::generateCoreClasses(const QString &baseFileName) const
+{
+ // Output header and implementation files for the backend and base class
+ writeCoreHelperClasses(baseFileName + QStringLiteral(".h"), Declaration);
+ writeCoreHelperClasses(baseFileName + QStringLiteral(".cpp"), Definition);
+
+ // Output the per-version and profile public classes
+ writeCoreClasses(baseFileName);
+
+ // We also need to generate a factory class that can be used by
+ // QOpenGLContext to actually create version function objects
+ writeCoreFactoryHeader(baseFileName + QStringLiteral("factory_p.h"));
+ writeCoreFactoryImplementation(baseFileName + QStringLiteral("factory.cpp"));
+}
+
+void CodeGenerator::generateExtensionClasses(const QString &baseFileName) const
+{
+ writeExtensionHeader(baseFileName + QStringLiteral(".h"));
+ writeExtensionImplementation(baseFileName + QStringLiteral(".cpp"));
+}
+
+bool CodeGenerator::isLegacyVersion(Version v) const
+{
+ return (v.major < 3 || (v.major == 3 && v.minor == 0));
+}
+
+bool CodeGenerator::versionHasProfiles(Version v) const
+{
+ VersionProfile vp;
+ vp.version = v;
+ return vp.hasProfiles();
+}
+
+void CodeGenerator::writeCoreHelperClasses(const QString &fileName, ClassComponent component) const
+{
+ if (!m_parser)
+ return;
+
+ QFile file(fileName);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+ QTextStream stream(&file);
+
+ // Write the preamble
+ writePreamble(fileName, stream);
+
+ // Iterate over each OpenGL version. For each version output a private class for
+ // core functions and a private class for deprecated functions.
+ const QString privateRootClass = QStringLiteral("QOpenGLVersionFunctionsBackend");
+ Q_FOREACH (const VersionProfile &versionProfile, m_parser->versionProfiles()) {
+ switch (component) {
+ case Declaration:
+ writeBackendClassDeclaration(stream, versionProfile, privateRootClass);
+ break;
+
+ case Definition:
+ writeBackendClassImplementation(stream, versionProfile, privateRootClass);
+ break;
+ }
+ }
+
+ // Write the postamble
+ writePostamble(fileName, stream);
+}
+
+void CodeGenerator::writeCoreClasses(const QString &baseFileName) const
+{
+ // Iterate over each OpenGL version. For each version output a public class (for legacy
+ // versions or two public classes (for modern versions with profiles). Each public class
+ // is given pointers to private classes containing the actual entry points. For example,
+ // the class for OpenGL 1.1 will have pointers to the private classes for 1.0 core, 1.1
+ // core, 1.0 deprecated and 1.1 deprecated. Whereas the class for OpenGL 3.2 Core profile
+ // will have pointers to the private classes for 1.0 core, 1.1 core, ..., 3.2 core but
+ // not to any of the deprecated private classes
+ QList<ClassComponent> components = (QList<ClassComponent>() << Declaration << Definition);
+ Q_FOREACH (const ClassComponent &component, components) {
+ const QString rootClass = QStringLiteral("QAbstractOpenGLFunctions");
+ Q_FOREACH (const Version &classVersion, m_parser->versions()) {
+ VersionProfile v;
+ v.version = classVersion;
+ v.profile = VersionProfile::CompatibilityProfile;
+
+ if (isLegacyVersion(classVersion)) {
+ switch (component) {
+ case Declaration:
+ writePublicClassDeclaration(baseFileName, v, rootClass);
+ break;
+
+ case Definition:
+ writePublicClassImplementation(baseFileName, v, rootClass);
+ break;
+ }
+ } else {
+ switch (component) {
+ case Declaration:
+ writePublicClassDeclaration(baseFileName, v, rootClass);
+ v.profile = VersionProfile::CoreProfile;
+ writePublicClassDeclaration(baseFileName, v, rootClass);
+ break;
+
+ case Definition:
+ writePublicClassImplementation(baseFileName, v, rootClass);
+ v.profile = VersionProfile::CoreProfile;
+ writePublicClassImplementation(baseFileName, v, rootClass);
+ break;
+ }
+ }
+ }
+ }
+}
+
+void CodeGenerator::writeCoreFactoryHeader(const QString &fileName) const
+{
+ if (!m_parser)
+ return;
+
+ QFile file(fileName);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+ QTextStream stream(&file);
+
+ // Write the preamble
+ writePreamble(fileName, stream);
+
+ // Write the postamble
+ writePostamble(fileName, stream);
+}
+
+void CodeGenerator::writeCoreFactoryImplementation(const QString &fileName) const
+{
+ if (!m_parser)
+ return;
+
+ QFile file(fileName);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+ QTextStream stream(&file);
+
+ // Write the preamble
+ writePreamble(fileName, stream);
+
+ // Get the set of version functions classes we need to create
+ QList<Version> versions = m_parser->versions();
+ qSort(versions.begin(), versions.end(), qGreater<Version>());
+
+ // Outout the #include statements
+ stream << QStringLiteral("#if !defined(QT_OPENGL_ES_2)") << endl;
+ Q_FOREACH (const Version &classVersion, versions) {
+ if (!versionHasProfiles(classVersion)) {
+ stream << QString(QStringLiteral("#include \"qopenglfunctions_%1_%2.h\""))
+ .arg(classVersion.major)
+ .arg(classVersion.minor) << endl;
+ } else {
+ const QList<VersionProfile::OpenGLProfile> profiles = (QList<VersionProfile::OpenGLProfile>()
+ << VersionProfile::CoreProfile << VersionProfile::CompatibilityProfile);
+
+ Q_FOREACH (const VersionProfile::OpenGLProfile profile, profiles) {
+ const QString profileSuffix = profile == VersionProfile::CoreProfile
+ ? QStringLiteral("core")
+ : QStringLiteral("compatibility");
+ stream << QString(QStringLiteral("#include \"qopenglfunctions_%1_%2_%3.h\""))
+ .arg(classVersion.major)
+ .arg(classVersion.minor)
+ .arg(profileSuffix) << endl;
+ }
+ }
+ }
+ stream << QStringLiteral("#else") << endl;
+ stream << QStringLiteral("#include \"qopenglfunctions_es2.h\"") << endl;
+ stream << QStringLiteral("#endif") << endl;
+
+ stream << endl;
+
+ stream << QStringLiteral("QT_BEGIN_NAMESPACE") << endl << endl;
+ stream << QStringLiteral("QAbstractOpenGLFunctions *QOpenGLVersionFunctionsFactory::create(const QOpenGLVersionProfile &versionProfile)") << endl;
+ stream << QStringLiteral("{") << endl;
+ stream << QStringLiteral("#if !defined(QT_OPENGL_ES_2)") << endl;
+ stream << QStringLiteral(" const int major = versionProfile.version().first;") << endl;
+ stream << QStringLiteral(" const int minor = versionProfile.version().second;") << endl << endl;
+
+ // Iterate over classes with profiles
+ stream << QStringLiteral(" if (versionProfile.hasProfiles()) {") << endl;
+ stream << QStringLiteral(" switch (versionProfile.profile()) {") << endl;
+ const QList<VersionProfile::OpenGLProfile> profiles = (QList<VersionProfile::OpenGLProfile>()
+ << VersionProfile::CoreProfile << VersionProfile::CompatibilityProfile);
+ Q_FOREACH (const VersionProfile::OpenGLProfile profile, profiles) {
+ const QString caseLabel = profile == VersionProfile::CoreProfile
+ ? QStringLiteral("QSurfaceFormat::CoreProfile")
+ : QStringLiteral("QSurfaceFormat::CompatibilityProfile");
+ stream << QString(QStringLiteral(" case %1:")).arg(caseLabel) << endl;
+
+ int i = 0;
+ Q_FOREACH (const Version &classVersion, versions) {
+ if (!versionHasProfiles(classVersion))
+ continue;
+
+ const QString ifString = (i++ == 0) ? QStringLiteral("if") : QStringLiteral("else if");
+ stream << QString(QStringLiteral(" %1 (major == %2 && minor == %3)"))
+ .arg(ifString)
+ .arg(classVersion.major)
+ .arg(classVersion.minor) << endl;
+
+ VersionProfile v;
+ v.version = classVersion;
+ v.profile = profile;
+ stream << QString(QStringLiteral(" return new %1;"))
+ .arg(generateClassName(v)) << endl;
+ }
+
+ stream << QStringLiteral(" break;") << endl << endl;
+ }
+
+ stream << QStringLiteral(" case QSurfaceFormat::NoProfile:") << endl;
+ stream << QStringLiteral(" default:") << endl;
+ stream << QStringLiteral(" break;") << endl;
+ stream << QStringLiteral(" };") << endl;
+ stream << QStringLiteral(" } else {") << endl;
+
+ // Iterate over the legacy classes (no profiles)
+ int i = 0;
+ Q_FOREACH (const Version &classVersion, versions) {
+ if (versionHasProfiles(classVersion))
+ continue;
+
+ const QString ifString = (i++ == 0) ? QStringLiteral("if") : QStringLiteral("else if");
+ stream << QString(QStringLiteral(" %1 (major == %2 && minor == %3)"))
+ .arg(ifString)
+ .arg(classVersion.major)
+ .arg(classVersion.minor) << endl;
+
+ VersionProfile v;
+ v.version = classVersion;
+ stream << QString(QStringLiteral(" return new %1;"))
+ .arg(generateClassName(v)) << endl;
+ }
+
+ stream << QStringLiteral(" }") << endl;
+ stream << QStringLiteral(" return 0;") << endl;
+
+ stream << QStringLiteral("#else") << endl;
+ stream << QStringLiteral(" Q_UNUSED(versionProfile);") << endl;
+ stream << QStringLiteral(" return new QOpenGLFunctions_ES2;") << endl;
+ stream << QStringLiteral("#endif") << endl;
+ stream << QStringLiteral("}") << endl;
+
+ // Write the postamble
+ writePostamble(fileName, stream);
+}
+
+/**
+ \returns all functions to be included in the class defined by \a classVersionProfile
+ */
+FunctionCollection CodeGenerator::functionCollection( const VersionProfile& classVersionProfile ) const
+{
+ const Version classVersion = classVersionProfile.version;
+ FunctionCollection functionSet;
+ QList<Version> versions = m_parser->versions();
+
+ // Populate these based upon the class version and profile
+ Version minVersion;
+ minVersion.major = 1;
+ minVersion.minor = 0;
+ Version maxVersion = classVersion;
+ QList<VersionProfile::OpenGLProfile> profiles;
+ profiles << VersionProfile::CoreProfile; // Always need core functions
+
+ if (isLegacyVersion(classVersion)
+ || (classVersionProfile.hasProfiles()
+ && classVersionProfile.profile == VersionProfile::CompatibilityProfile)) {
+ // For versions < 3.1 and Compatibility profile we include both core and deprecated functions
+ profiles << VersionProfile::CompatibilityProfile;
+ }
+
+ Q_FOREACH (const Version &v, versions) {
+ // Only include functions from versions in the range
+ if (v < minVersion)
+ continue;
+ if (v > maxVersion)
+ break;
+
+ Q_FOREACH (VersionProfile::OpenGLProfile profile, profiles) {
+ // Combine version and profile for this subset of functions
+ VersionProfile version;
+ version.version = v;
+ version.profile = profile;
+
+ // Fetch the functions and add to collection for this class
+ QList<Function> functions = m_parser->functionsForVersion(version);
+ functionSet.insert(version, functions);
+ }
+ }
+
+ return functionSet;
+}
+
+void CodeGenerator::writePreamble(const QString &baseFileName, QTextStream &stream, const QString replacement) const
+{
+ const QString fileName = baseFileName + QStringLiteral(".header");
+ if (!QFile::exists(fileName))
+ return;
+
+ QFile file(fileName);
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ QTextStream preambleStream(&file);
+ QString preamble = preambleStream.readAll();
+ if (!replacement.isEmpty())
+ preamble.replace(QStringLiteral("__VERSION__"), replacement, Qt::CaseSensitive);
+ stream << preamble;
+ }
+}
+
+void CodeGenerator::writePostamble(const QString &baseFileName, QTextStream &stream) const
+{
+ const QString fileName = baseFileName + QStringLiteral(".footer");
+ if (!QFile::exists(fileName))
+ return;
+
+ QFile file(fileName);
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ QTextStream postambleStream(&file);
+ QString postamble = postambleStream.readAll();
+ stream << postamble;
+ }
+}
+
+QString CodeGenerator::passByType(const Argument &arg) const
+{
+ QString passBy;
+ switch (arg.mode) {
+ case Argument::Reference:
+ case Argument::Array:
+ passBy = QStringLiteral("*");
+ break;
+
+ default:
+ case Argument::Value:
+ passBy = QString();
+ }
+ return passBy;
+}
+
+QString CodeGenerator::safeArgumentName(const QString& arg) const
+{
+ if (arg == QStringLiteral("near")) // MS Windows defines near and far
+ return QStringLiteral("nearVal");
+ else if (arg == QStringLiteral("far"))
+ return QStringLiteral("farVal");
+ else if (arg == QStringLiteral("d"))
+ return QStringLiteral("dd"); // Don't shadow d pointer
+ else
+ return arg;
+}
+
+QString CodeGenerator::generateClassName(const VersionProfile &classVersion, ClassVisibility visibility) const
+{
+ QString className;
+ switch ( visibility ) {
+ case Public: {
+ // Class name and base class
+ QString profileSuffix;
+ if (classVersion.hasProfiles())
+ profileSuffix = (classVersion.profile == VersionProfile::CoreProfile ? QStringLiteral("_Core") : QStringLiteral("_Compatibility"));
+
+ className = QString(QStringLiteral("QOpenGLFunctions_%1_%2%3"))
+ .arg(classVersion.version.major)
+ .arg(classVersion.version.minor)
+ .arg(profileSuffix);
+ break;
+ }
+ case Private: {
+ QString statusSuffix = (classVersion.profile == VersionProfile::CoreProfile ? QStringLiteral("_Core") : QStringLiteral("_Deprecated"));
+
+ className = QString(QStringLiteral("QOpenGLFunctions_%1_%2%3Private"))
+ .arg(classVersion.version.major)
+ .arg(classVersion.version.minor)
+ .arg(statusSuffix);
+ break;
+ }
+ }
+
+ return className;
+}
+
+void CodeGenerator::writeBackendClassDeclaration(QTextStream &stream,
+ const VersionProfile &versionProfile,
+ const QString &baseClass) const
+{
+ const QString className = backendClassName(versionProfile);
+ stream << QString(QStringLiteral("class %1 : public %2"))
+ .arg(className)
+ .arg(baseClass)
+ << endl;
+ stream << QStringLiteral("{") << endl;
+ stream << QStringLiteral("public:") << endl;
+ stream << QString( QStringLiteral(" %1(QOpenGLContext *context);") ).arg(className) << endl << endl;
+
+ // Output function used for generating key used in QOpenGLContextPrivate
+ stream << QStringLiteral(" static QOpenGLVersionStatus versionStatus();") << endl << endl;
+
+ // Get the functions needed for this class
+ FunctionList functions = m_parser->functionsForVersion(versionProfile);
+ FunctionCollection functionSet;
+ functionSet.insert(versionProfile, functions);
+
+ // Declare the functions
+ writeClassFunctionDeclarations(stream, functionSet, Private);
+
+ stream << QStringLiteral("};") << endl;
+ stream << endl;
+}
+
+void CodeGenerator::writeBackendClassImplementation(QTextStream &stream,
+ const VersionProfile &versionProfile,
+ const QString &baseClass) const
+{
+ const QString className = backendClassName(versionProfile);
+ stream << QString(QStringLiteral("%1::%1(QOpenGLContext *context)")).arg(className) << endl;
+ stream << QString(QStringLiteral(" : %1(context)")).arg(baseClass) << endl
+ << QStringLiteral("{") << endl;
+
+ // Resolve the entry points for this set of functions
+ // Get the functions needed for this class
+ FunctionList functions = m_parser->functionsForVersion(versionProfile);
+ FunctionCollection functionSet;
+ functionSet.insert(versionProfile, functions);
+ writeEntryPointResolutionCode(stream, functionSet);
+
+ stream << QStringLiteral("}") << endl << endl;
+
+ stream << QString(QStringLiteral("QOpenGLVersionStatus %1::versionStatus()")).arg(className) << endl;
+ stream << QStringLiteral("{") << endl;
+ const QString status = versionProfile.profile == VersionProfile::CoreProfile
+ ? QStringLiteral("QOpenGLVersionStatus::CoreStatus")
+ : QStringLiteral("QOpenGLVersionStatus::DeprecatedStatus");
+ stream << QString(QStringLiteral(" return QOpenGLVersionStatus(%1, %2, %3);"))
+ .arg(versionProfile.version.major)
+ .arg(versionProfile.version.minor)
+ .arg(status) << endl;
+ stream << QStringLiteral("}") << endl << endl;
+}
+
+QString CodeGenerator::coreClassFileName(const VersionProfile &versionProfile,
+ const QString& fileExtension) const
+{
+ QString profileSuffix;
+ if (versionProfile.hasProfiles())
+ profileSuffix = (versionProfile.profile == VersionProfile::CoreProfile ? QStringLiteral("_core") : QStringLiteral("_compatibility"));
+
+ const QString fileName = QString(QStringLiteral("qopenglfunctions_%1_%2%3.%4"))
+ .arg(versionProfile.version.major)
+ .arg(versionProfile.version.minor)
+ .arg(profileSuffix)
+ .arg(fileExtension);
+ return fileName;
+}
+
+void CodeGenerator::writePublicClassDeclaration(const QString &baseFileName,
+ const VersionProfile &versionProfile,
+ const QString &baseClass) const
+{
+ const QString fileName = coreClassFileName(versionProfile, QStringLiteral("h"));
+ QFile file(fileName);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+ QTextStream stream(&file);
+
+ // Write the preamble
+ const QString templateFileName = QString(QStringLiteral("%1__VERSION__.h"))
+ .arg(baseFileName);
+ QString profileSuffix;
+ if (versionProfile.hasProfiles())
+ profileSuffix = (versionProfile.profile == VersionProfile::CoreProfile ? QStringLiteral("_CORE") : QStringLiteral("_COMPATIBILITY"));
+
+ const QString versionProfileString = QString(QStringLiteral("_%1_%2%3"))
+ .arg(versionProfile.version.major)
+ .arg(versionProfile.version.minor)
+ .arg(profileSuffix);
+ writePreamble(templateFileName, stream, versionProfileString);
+
+ // Ctor, dtor, and initialize function;
+ const QString className = generateClassName(versionProfile, Public);
+ stream << QString(QStringLiteral("class Q_GUI_EXPORT %1 : public %2"))
+ .arg(className)
+ .arg(baseClass)
+ << endl;
+ stream << QStringLiteral("{") << endl;
+ stream << QStringLiteral("public:") << endl;
+ stream << QString(QStringLiteral(" %1();")).arg(className) << endl;
+ stream << QString(QStringLiteral(" ~%1();")).arg(className) << endl << endl;
+ stream << QStringLiteral(" bool initializeOpenGLFunctions() Q_DECL_OVERRIDE;") << endl << endl;
+
+ // Get the functions needed for this class and declare them
+ FunctionCollection functionSet = functionCollection(versionProfile);
+ writeClassFunctionDeclarations(stream, functionSet, Public);
+
+ // isCompatible function and backend variables
+ stream << QStringLiteral("private:") << endl;
+ stream << QStringLiteral(" friend class QOpenGLContext;") << endl << endl;
+ stream << QStringLiteral(" static bool isContextCompatible(QOpenGLContext *context);") << endl;
+ stream << QStringLiteral(" static QOpenGLVersionProfile versionProfile();") << endl << endl;
+ writeBackendVariableDeclarations(stream, backendsForFunctionCollection(functionSet));
+
+ stream << QStringLiteral("};") << endl << endl;
+
+ // Output the inline functions that forward OpenGL calls to the backends' entry points
+ writeClassInlineFunctions(stream, className, functionSet);
+
+ // Write the postamble
+ writePostamble(templateFileName, stream);
+}
+
+void CodeGenerator::writePublicClassImplementation(const QString &baseFileName,
+ const VersionProfile &versionProfile,
+ const QString& baseClass) const
+{
+ const QString fileName = coreClassFileName(versionProfile, QStringLiteral("cpp"));
+ QFile file(fileName);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+ QTextStream stream(&file);
+
+ // Write the preamble
+ const QString templateFileName = QString(QStringLiteral("%1__VERSION__.cpp"))
+ .arg(baseFileName);
+ QString profileSuffix;
+ if (versionProfile.hasProfiles())
+ profileSuffix = (versionProfile.profile == VersionProfile::CoreProfile ? QStringLiteral("_core") : QStringLiteral("_compatibility"));
+
+ const QString versionProfileString = QString(QStringLiteral("_%1_%2%3"))
+ .arg(versionProfile.version.major)
+ .arg(versionProfile.version.minor)
+ .arg(profileSuffix);
+ writePreamble(templateFileName, stream, versionProfileString);
+
+ const QString className = generateClassName(versionProfile, Public);
+ stream << QStringLiteral("/*!") << endl
+ << QStringLiteral(" \\class ") << className << endl
+ << QStringLiteral(" \\inmodule QtGui") << endl
+ << QStringLiteral(" \\since 5.1") << endl
+ << QStringLiteral(" \\brief The ") << className
+ << QStringLiteral(" class provides all functions for this version and profile of OpenGL.") << endl << endl
+ << QStringLiteral(" \\sa QAbstractOpenGLFunctions") << endl
+ << QStringLiteral("*/") << endl << endl;
+
+ // Get the data we'll need for this class implementation
+ FunctionCollection functionSet = functionCollection(versionProfile);
+ QList<VersionProfile> backends = backendsForFunctionCollection(functionSet);
+
+ // Output default constructor
+ stream << className << QStringLiteral("::") << className << QStringLiteral("()") << endl;
+ stream << QStringLiteral(" : ") << baseClass << QStringLiteral("()");
+ Q_FOREACH (const VersionProfile &v, backends)
+ stream << endl << QString(QStringLiteral(" , %1(0)")).arg(backendVariableName(v));
+ stream << endl << QStringLiteral("{") << endl << QStringLiteral("}") << endl << endl;
+
+ // Output the destructor
+ stream << className << QStringLiteral("::~") << className << QStringLiteral("()") << endl;
+ stream << QStringLiteral("{") << endl;
+ Q_FOREACH (const VersionProfile &v, backends) {
+ const QString backendVar = backendVariableName(v);
+ const QString backendClass = backendClassName(v);
+ stream << QString(QStringLiteral(" if (%1 && !%1->refs.deref()) {")).arg(backendVar) << endl;
+ stream << QString(QStringLiteral(" QAbstractOpenGLFunctionsPrivate::removeFunctionsBackend(%1->context, %2::versionStatus());"))
+ .arg(backendVar)
+ .arg(backendClass) << endl;
+ stream << QString(QStringLiteral(" delete %1;")).arg(backendVar) << endl;
+ stream << QStringLiteral(" }") << endl;
+ }
+ stream << QStringLiteral("}") << endl << endl;
+
+ // Output the initialize function that creates the backend objects
+ stream << QString(QStringLiteral("bool %1::initializeOpenGLFunctions()")).arg(className) << endl;
+ stream << QStringLiteral("{") << endl;
+
+ stream << QStringLiteral(" if ( isInitialized() )") << endl;
+ stream << QStringLiteral(" return true;") << endl << endl;
+ stream << QStringLiteral(" QOpenGLContext* context = QOpenGLContext::currentContext();") << endl << endl;
+ stream << QStringLiteral(" // If owned by a context object make sure it is current.") << endl;
+ stream << QStringLiteral(" // Also check that current context is capable of resolving all needed functions") << endl;
+ stream << QStringLiteral(" if (((owningContext() && owningContext() == context) || !owningContext())") << endl;
+ stream << QString(QStringLiteral(" && %1::isContextCompatible(context))")).arg(className) << endl;
+ stream << QStringLiteral(" {") << endl;
+ stream << QStringLiteral(" // Associate with private implementation, creating if necessary") << endl;
+ stream << QStringLiteral(" // Function pointers in the backends are resolved at creation time") << endl;
+ stream << QStringLiteral(" QOpenGLVersionFunctionsBackend* d = 0;") << endl;
+
+ Q_FOREACH (const VersionProfile &v, backends) {
+ const QString backendClass = backendClassName(v);
+ const QString backendVar = backendVariableName(v);
+ stream << QString(QStringLiteral(" d = QAbstractOpenGLFunctionsPrivate::functionsBackend(context, %1::versionStatus());"))
+ .arg(backendClass) << endl;
+ stream << QStringLiteral(" if (!d) {") << endl;
+ stream << QString(QStringLiteral(" d = new %1(context);")).arg(backendClass) << endl;
+ stream << QString(QStringLiteral(" QAbstractOpenGLFunctionsPrivate::insertFunctionsBackend(context, %1::versionStatus(), d);"))
+ .arg(backendClass) << endl;
+ stream << QStringLiteral(" }") << endl;
+ stream << QString(QStringLiteral(" %1 = static_cast<%2*>(d);")).arg(backendVar).arg(backendClass) << endl;
+ stream << QStringLiteral(" d->refs.ref();") << endl << endl;
+ }
+
+ stream << QStringLiteral(" QAbstractOpenGLFunctions::initializeOpenGLFunctions();") << endl;
+ stream << QStringLiteral(" }") << endl;
+
+ stream << QStringLiteral(" return isInitialized();") << endl;
+ stream << QStringLiteral("}") << endl << endl;
+
+ // Output the context compatibility check function
+ stream << QString(QStringLiteral("bool %1::isContextCompatible(QOpenGLContext *context)")).arg(className) << endl;
+ stream << QStringLiteral("{") << endl;
+ stream << QStringLiteral(" Q_ASSERT(context);") << endl;
+ stream << QStringLiteral(" QSurfaceFormat f = context->format();") << endl;
+ stream << QStringLiteral(" const QPair<int, int> v = qMakePair(f.majorVersion(), f.minorVersion());") << endl;
+ stream << QString(QStringLiteral(" if (v < qMakePair(%1, %2))"))
+ .arg(versionProfile.version.major)
+ .arg(versionProfile.version.minor) << endl;
+ stream << QStringLiteral(" return false;") << endl << endl;
+
+ // If generating a legacy or compatibility profile class we need to ensure that
+ // the context does not expose only core functions
+ if (versionProfile.profile != VersionProfile::CoreProfile) {
+ stream << QStringLiteral(" if (f.profile() == QSurfaceFormat::CoreProfile)") << endl;
+ stream << QStringLiteral(" return false;") << endl << endl;
+ }
+
+ stream << QStringLiteral(" return true;") << endl;
+ stream << QStringLiteral("}") << endl << endl;
+
+ // Output static function used as helper in template versionFunctions() function
+ // in QOpenGLContext
+ stream << QString(QStringLiteral("QOpenGLVersionProfile %1::versionProfile()")).arg(className) << endl;
+ stream << QStringLiteral("{") << endl;
+ stream << QStringLiteral(" QOpenGLVersionProfile v;") << endl;
+ stream << QString(QStringLiteral(" v.setVersion(%1, %2);"))
+ .arg(versionProfile.version.major)
+ .arg(versionProfile.version.minor) << endl;
+ if (versionProfile.hasProfiles()) {
+ const QString profileName = versionProfile.profile == VersionProfile::CoreProfile
+ ? QStringLiteral("QSurfaceFormat::CoreProfile")
+ : QStringLiteral("QSurfaceFormat::CompatibilityProfile");
+ stream << QString(QStringLiteral(" v.setProfile(%1);")).arg(profileName) << endl;
+ }
+ stream << QStringLiteral(" return v;") << endl;
+ stream << QStringLiteral("}") << endl;
+
+ // Write the postamble
+ writePostamble(templateFileName, stream);
+}
+
+void CodeGenerator::writeClassFunctionDeclarations(QTextStream &stream,
+ const FunctionCollection &functionSet,
+ ClassVisibility visibility) const
+{
+ Q_FOREACH (const VersionProfile &version, functionSet.keys()) {
+ // Add a comment to the header
+ stream << QString(QStringLiteral(" // OpenGL %1.%2 %3 functions"))
+ .arg(version.version.major)
+ .arg(version.version.minor)
+ .arg((version.profile == VersionProfile::CoreProfile) ? QStringLiteral("core") : QStringLiteral("deprecated"))
+ << endl;
+
+ // Output function declarations
+ FunctionList functions = functionSet.value(version);
+ Q_FOREACH (const Function &f, functions)
+ writeFunctionDeclaration(stream, f, visibility);
+ stream << endl;
+ } // version and profile
+}
+
+void CodeGenerator::writeFunctionDeclaration(QTextStream &stream, const Function &f, ClassVisibility visibility) const
+{
+ QStringList argList;
+ Q_FOREACH (const Argument &arg, f.arguments) {
+ QString a = QString(QStringLiteral("%1%2 %3%4"))
+ .arg((arg.direction == Argument::In && arg.mode != Argument::Value) ? QStringLiteral("const ") : QString())
+ .arg(arg.type)
+ .arg(passByType(arg))
+ .arg(safeArgumentName(arg.name));
+ argList.append(a);
+ }
+ QString args = argList.join(QStringLiteral(", "));
+
+ QString signature;
+ switch (visibility) {
+ case Public:
+ signature = QString(QStringLiteral(" %1 gl%2(%3);")).arg(f.returnType).arg(f.name).arg(args);
+ break;
+
+ case Private:
+ default:
+ signature = QString(QStringLiteral(" %1 (QOPENGLF_APIENTRYP %2)(%3);")).arg(f.returnType).arg(f.name).arg(args);
+ }
+ stream << signature << endl;
+}
+
+void CodeGenerator::writeClassInlineFunctions(QTextStream &stream,
+ const QString &className,
+ const FunctionCollection &functionSet) const
+{
+ Q_FOREACH (const VersionProfile &version, functionSet.keys()) {
+
+ // Add a comment to the header
+ stream << QString(QStringLiteral("// OpenGL %1.%2 %3 functions"))
+ .arg(version.version.major)
+ .arg(version.version.minor)
+ .arg((version.profile == VersionProfile::CoreProfile) ? QStringLiteral("core") : QStringLiteral("deprecated"))
+ << endl;
+
+ // Output function declarations
+ const QString backendVar = backendVariableName(version);
+ FunctionList functions = functionSet.value(version);
+ Q_FOREACH (const Function &f, functions)
+ writeInlineFunction(stream, className, backendVar, f);
+
+ stream << endl;
+
+ } // version and profile
+}
+
+void CodeGenerator::writeInlineFunction(QTextStream &stream, const QString &className,
+ const QString &backendVar, const Function &f) const
+{
+ QStringList argList;
+ Q_FOREACH (const Argument &arg, f.arguments) {
+ QString a = QString(QStringLiteral("%1%2 %3%4"))
+ .arg((arg.direction == Argument::In && arg.mode != Argument::Value) ? QStringLiteral("const ") : QString())
+ .arg(arg.type)
+ .arg(passByType(arg))
+ .arg(safeArgumentName(arg.name));
+ argList.append(a);
+ }
+ QString args = argList.join(", ");
+
+
+ QString signature = QString(QStringLiteral("inline %1 %2::gl%3(%4)"))
+ .arg(f.returnType)
+ .arg(className)
+ .arg(f.name)
+ .arg(args);
+ stream << signature << endl << QStringLiteral("{") << endl;
+
+ QStringList argumentNames;
+ Q_FOREACH (const Argument &arg, f.arguments)
+ argumentNames.append(safeArgumentName(arg.name));
+ QString argNames = argumentNames.join(", ");
+
+ if (f.returnType == QStringLiteral("void"))
+ stream << QString(QStringLiteral(" %1->%2(%3);")).arg(backendVar).arg(f.name).arg(argNames) << endl;
+ else
+ stream << QString(QStringLiteral(" return %1->%2(%3);")).arg(backendVar).arg(f.name).arg(argNames) << endl;
+ stream << QStringLiteral("}") << endl << endl;
+}
+
+void CodeGenerator::writeEntryPointResolutionCode(QTextStream &stream,
+ const FunctionCollection &functionSet) const
+{
+ bool hasModuleHandle = false;
+ Q_FOREACH (const VersionProfile &version, functionSet.keys()) {
+
+ // Add a comment to the header
+ stream << QString(QStringLiteral(" // OpenGL %1.%2 %3 functions"))
+ .arg(version.version.major)
+ .arg(version.version.minor)
+ .arg((version.profile == VersionProfile::CoreProfile) ? QStringLiteral("core") : QStringLiteral("deprecated"))
+ << endl;
+
+ // Output function declarations
+ FunctionList functions = functionSet.value(version);
+
+ bool useGetProcAddress = (version.version.major == 1 && (version.version.minor == 0 || version.version.minor == 1));
+ if (useGetProcAddress) {
+ stream << "#if defined(Q_OS_WIN)" << endl;
+ if (!hasModuleHandle) {
+ stream << " HMODULE handle = GetModuleHandleA(\"opengl32.dll\");" << endl;
+ hasModuleHandle = true;
+ }
+
+ Q_FOREACH (const Function &f, functions)
+ writeEntryPointResolutionStatement(stream, f, QString(), useGetProcAddress);
+
+ stream << "#else" << endl;
+ }
+
+ Q_FOREACH (const Function &f, functions)
+ writeEntryPointResolutionStatement(stream, f);
+
+ if (useGetProcAddress)
+ stream << "#endif" << endl;
+
+ stream << endl;
+
+ } // version and profile
+}
+
+void CodeGenerator::writeEntryPointResolutionStatement(QTextStream &stream, const Function &f,
+ const QString &prefix, bool useGetProcAddress) const
+{
+ QStringList argList;
+ Q_FOREACH (const Argument &arg, f.arguments) {
+ QString a = QString("%1%2 %3")
+ .arg((arg.direction == Argument::In && arg.mode != Argument::Value) ? QStringLiteral("const ") : QString())
+ .arg(arg.type)
+ .arg(passByType(arg));
+ argList.append(a);
+ }
+ QString args = argList.join(QStringLiteral(", "));
+
+ QString signature;
+ if (!useGetProcAddress) {
+ signature = QString(QStringLiteral(" %4%3 = reinterpret_cast<%1 (QOPENGLF_APIENTRYP)(%2)>(context->getProcAddress(\"gl%3\"));"))
+ .arg(f.returnType)
+ .arg(args)
+ .arg(f.name)
+ .arg(prefix);
+ } else {
+ signature = QString(QStringLiteral(" %4%3 = reinterpret_cast<%1 (QOPENGLF_APIENTRYP)(%2)>(GetProcAddress(handle, \"gl%3\"));"))
+ .arg(f.returnType)
+ .arg(args)
+ .arg(f.name)
+ .arg(prefix);
+ }
+ stream << signature << endl;
+}
+
+QList<VersionProfile> CodeGenerator::backendsForFunctionCollection(const FunctionCollection &functionSet) const
+{
+ QList<VersionProfile> backends;
+ Q_FOREACH (const VersionProfile &versionProfile, functionSet.keys()) {
+ if (m_parser->versionProfiles().contains(versionProfile))
+ backends.append(versionProfile);
+ }
+ return backends;
+}
+
+QString CodeGenerator::backendClassName(const VersionProfile &v) const
+{
+ QString statusSuffix = v.profile == VersionProfile::CoreProfile
+ ? QStringLiteral("_Core")
+ : QStringLiteral("_Deprecated");
+ const QString className = QString(QStringLiteral("QOpenGLFunctions_%1_%2%3Backend"))
+ .arg(v.version.major)
+ .arg(v.version.minor)
+ .arg(statusSuffix);
+ return className;
+}
+
+QString CodeGenerator::backendVariableName(const VersionProfile &v) const
+{
+ const QString status = (v.profile == VersionProfile::CoreProfile)
+ ? QStringLiteral("Core")
+ : QStringLiteral("Deprecated");
+ const QString varName = QString(QStringLiteral("d_%1_%2_%3"))
+ .arg(v.version.major)
+ .arg(v.version.minor)
+ .arg(status);
+ return varName;
+}
+
+void CodeGenerator::writeBackendVariableDeclarations(QTextStream &stream, const QList<VersionProfile> &backends) const
+{
+ // We need a private class for each version and profile (status: core or deprecated)
+ Q_FOREACH (const VersionProfile &v, backends) {
+ const QString className = backendClassName(v);
+ const QString varName = backendVariableName(v);
+ stream << QString(QStringLiteral(" %1* %2;")).arg(className).arg(varName) << endl;
+ }
+}
+
+void CodeGenerator::writeExtensionHeader(const QString &fileName) const
+{
+ if (!m_parser)
+ return;
+
+ QFile file(fileName);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+ QTextStream stream(&file);
+
+ // Write the preamble
+ writePreamble(fileName, stream);
+
+ // Iterate through the list of extensions and create one class per extension
+ QStringList extensions = m_parser->extensions();
+ Q_FOREACH (const QString &extension, extensions) {
+ writeExtensionClassDeclaration(stream, extension, Private);
+ writeExtensionClassDeclaration(stream, extension, Public);
+ }
+
+ // Write the postamble
+ writePostamble(fileName, stream);
+}
+
+void CodeGenerator::writeExtensionImplementation(const QString &fileName) const
+{
+ if (!m_parser)
+ return;
+
+ QFile file(fileName);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
+ return;
+ QTextStream stream(&file);
+
+ // Write the preamble
+ writePreamble(fileName, stream);
+
+ // Iterate through the list of extensions and create one class per extension
+ QStringList extensions = m_parser->extensions();
+ Q_FOREACH (const QString &extension, extensions)
+ writeExtensionClassImplementation(stream, extension);
+
+ // Write the postamble
+ writePostamble(fileName, stream);
+}
+
+void CodeGenerator::writeExtensionClassDeclaration(QTextStream &stream, const QString &extension, ClassVisibility visibility) const
+{
+ const QString className = generateExtensionClassName(extension, visibility);
+
+ QString baseClass = (visibility == Public) ? QStringLiteral("QAbstractOpenGLExtension") : QStringLiteral("QAbstractOpenGLExtensionPrivate");
+
+ stream << QString(QStringLiteral("class %2 : public %3"))
+ .arg(className)
+ .arg(baseClass)
+ << endl << "{" << endl << "public:" << endl;
+
+ if (visibility == Public) {
+ // Default constructor
+ stream << QStringLiteral(" ") << className << QStringLiteral("();") << endl << endl;
+
+ // Base class virtual function(s)
+ QString resolveFunction = QStringLiteral(" bool initializeOpenGLFunctions() Q_DECL_FINAL;");
+ stream << resolveFunction << endl << endl;
+ }
+
+ // Output the functions provided by this extension
+ QList<Function> functions = m_parser->functionsForExtension(extension);
+ Q_FOREACH (const Function &f, functions)
+ writeFunctionDeclaration(stream, f, visibility);
+
+ if (visibility == Public) {
+ // Write out the protected ctor
+ stream << endl << QStringLiteral("protected:") << endl;
+ stream << QStringLiteral(" Q_DECLARE_PRIVATE(") << className << QStringLiteral(")") << endl;
+ }
+
+ // End the class declaration
+ stream << QStringLiteral("};") << endl << endl;
+
+ // Output the inline functions for public class
+ if (visibility == Public) {
+ Q_FOREACH (const Function &f, functions)
+ writeExtensionInlineFunction(stream, className, f);
+ }
+}
+
+void CodeGenerator::writeExtensionInlineFunction(QTextStream &stream, const QString &className, const Function &f) const
+{
+ QStringList argList;
+ Q_FOREACH (const Argument &arg, f.arguments) {
+ QString a = QString(QStringLiteral("%1%2 %3%4"))
+ .arg((arg.direction == Argument::In && arg.mode != Argument::Value) ? QStringLiteral("const ") : QString())
+ .arg(arg.type)
+ .arg(passByType(arg))
+ .arg(safeArgumentName(arg.name));
+ argList.append(a);
+ }
+ QString args = argList.join(", ");
+
+
+ QString signature = QString(QStringLiteral("inline %1 %2::gl%3(%4)"))
+ .arg(f.returnType)
+ .arg(className)
+ .arg(f.name)
+ .arg(args);
+ stream << signature << endl << QStringLiteral("{") << endl;
+
+ stream << QString(QStringLiteral(" Q_D(%1);")).arg(className) << endl;
+
+ QStringList argumentNames;
+ Q_FOREACH (const Argument &arg, f.arguments)
+ argumentNames.append(safeArgumentName(arg.name));
+ QString argNames = argumentNames.join(", ");
+
+ if (f.returnType == QStringLiteral("void"))
+ stream << QString(QStringLiteral(" d->%1(%2);")).arg(f.name).arg(argNames) << endl;
+ else
+ stream << QString(QStringLiteral(" return d->%1(%2);")).arg(f.name).arg(argNames) << endl;
+ stream << QStringLiteral("}") << endl << endl;
+}
+
+void CodeGenerator::writeExtensionClassImplementation(QTextStream &stream, const QString &extension) const
+{
+ const QString className = generateExtensionClassName(extension);
+ const QString privateClassName = generateExtensionClassName(extension, Private);
+
+ // Output default constructor
+ stream << className << QStringLiteral("::") << className << QStringLiteral("()") << endl;
+ stream << QStringLiteral(" : QAbstractOpenGLExtension(*(new ") << privateClassName << QStringLiteral("))") << endl;
+ stream << QStringLiteral("{") << endl << QStringLiteral("}") << endl << endl;
+
+
+ // Output function to initialize this class
+ stream << QStringLiteral("bool ") << className
+ << QStringLiteral("::initializeOpenGLFunctions()") << endl
+ << QStringLiteral("{") << endl;
+
+ stream << QStringLiteral(" if (isInitialized())") << endl;
+ stream << QStringLiteral(" return true;") << endl << endl;
+
+ stream << QStringLiteral(" QOpenGLContext *context = QOpenGLContext::currentContext();") << endl;
+ stream << QStringLiteral(" if (!context) {") << endl;
+ stream << QStringLiteral(" qWarning(\"A current OpenGL context is required to resolve OpenGL extension functions\");")
+ << endl;
+ stream << QStringLiteral(" return false;") << endl;
+ stream << QStringLiteral(" }") << endl << endl;
+
+ // Output code to resolve entry points for this class
+ stream << QStringLiteral(" // Resolve the functions") << endl;
+ stream << QStringLiteral(" Q_D(") << className << QStringLiteral(");") << endl;
+ stream << endl;
+
+ // Output function declarations
+ QList<Function> functions = m_parser->functionsForExtension(extension);
+ Q_FOREACH (const Function &f, functions)
+ writeEntryPointResolutionStatement(stream, f, QStringLiteral("d->"));
+
+ // Call the base class implementation
+ stream << QStringLiteral(" QAbstractOpenGLExtension::initializeOpenGLFunctions();") << endl;
+
+ // Finish off
+ stream << QStringLiteral(" return true;") << endl;
+ stream << QStringLiteral("}") << endl << endl;
+}
+
+QString CodeGenerator::generateExtensionClassName(const QString &extension, ClassVisibility visibility) const
+{
+ QString visibilitySuffix;
+ if (visibility == Private)
+ visibilitySuffix = QStringLiteral("Private");
+
+ return QString(QStringLiteral("QOpenGLExtension_%1%2"))
+ .arg(extension)
+ .arg(visibilitySuffix);
+}
diff --git a/util/glgen/codegenerator.h b/util/glgen/codegenerator.h
new file mode 100644
index 0000000000..7ad4d49e8d
--- /dev/null
+++ b/util/glgen/codegenerator.h
@@ -0,0 +1,149 @@
+/***************************************************************************
+**
+** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB)
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the utilities 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 CODEGENERATOR_H
+#define CODEGENERATOR_H
+
+#include "specparser.h"
+
+class QTextStream;
+
+class CodeGenerator
+{
+public:
+ explicit CodeGenerator();
+
+ void setParser(SpecParser *parser) {m_parser = parser;}
+
+ void generateCoreClasses(const QString &baseFileName) const;
+
+ void generateExtensionClasses(const QString &baseFileName) const;
+
+private:
+ // Generic support
+ enum ClassVisibility {
+ Public,
+ Private
+ };
+
+ enum ClassComponent {
+ Declaration = 0,
+ Definition
+ };
+
+ bool isLegacyVersion(Version v) const;
+ bool versionHasProfiles(Version v) const;
+
+ FunctionCollection functionCollection( const VersionProfile& classVersionProfile ) const;
+
+ void writePreamble(const QString &baseFileName, QTextStream &stream, const QString replacement = QString()) const;
+ void writePostamble(const QString &baseFileName, QTextStream &stream) const;
+
+ QString passByType(const Argument &arg) const;
+ QString safeArgumentName(const QString& arg) const;
+
+ // Core functionality support
+ QString coreClassFileName(const VersionProfile &versionProfile,
+ const QString& fileExtension) const;
+ void writeCoreHelperClasses(const QString &fileName, ClassComponent component) const;
+ void writeCoreClasses(const QString &baseFileName) const;
+
+ void writeCoreFactoryHeader(const QString &fileName) const;
+ void writeCoreFactoryImplementation(const QString &fileName) const;
+
+ QString generateClassName(const VersionProfile &classVersion, ClassVisibility visibility = Public) const;
+
+ void writeBackendClassDeclaration(QTextStream &stream,
+ const VersionProfile &versionProfile,
+ const QString &baseClass) const;
+ void writeBackendClassImplementation(QTextStream &stream,
+ const VersionProfile &versionProfile,
+ const QString &baseClass) const;
+
+ void writePublicClassDeclaration(const QString &baseFileName,
+ const VersionProfile &versionProfile,
+ const QString &baseClass) const;
+ void writePublicClassImplementation(const QString &baseFileName,
+ const VersionProfile &versionProfile,
+ const QString& baseClass) const;
+
+ void writeClassFunctionDeclarations(QTextStream &stream,
+ const FunctionCollection &functionSets,
+ ClassVisibility visibility) const;
+
+ void writeFunctionDeclaration(QTextStream &stream, const Function &f, ClassVisibility visibility) const;
+
+ void writeClassInlineFunctions(QTextStream &stream,
+ const QString &className,
+ const FunctionCollection &functionSet) const;
+
+ void writeInlineFunction(QTextStream &stream, const QString &className,
+ const QString &backendVar, const Function &f) const;
+
+ void writeEntryPointResolutionCode(QTextStream &stream,
+ const FunctionCollection &functionSet) const;
+
+ void writeEntryPointResolutionStatement(QTextStream &stream, const Function &f,
+ const QString &prefix = QString(), bool useGetProcAddress = false) const;
+
+ QList<VersionProfile> backendsForFunctionCollection(const FunctionCollection &functionSet) const;
+ QString backendClassName(const VersionProfile &v) const;
+ QString backendVariableName(const VersionProfile &v) const;
+ void writeBackendVariableDeclarations(QTextStream &stream, const QList<VersionProfile> &backends) const;
+
+
+ // Extension class support
+ void writeExtensionHeader(const QString &fileName) const;
+ void writeExtensionImplementation(const QString &fileName) const;
+
+ void writeExtensionClassDeclaration(QTextStream &stream,
+ const QString &extension,
+ ClassVisibility visibility = Public) const;
+ void writeExtensionClassImplementation(QTextStream &stream, const QString &extension) const;
+
+ QString generateExtensionClassName(const QString &extension, ClassVisibility visibility = Public) const;
+ void writeExtensionInlineFunction(QTextStream &stream, const QString &className, const Function &f) const;
+
+ SpecParser *m_parser;
+ mutable QMap<QString, int> m_extensionIds;
+};
+
+#endif // CODEGENERATOR_H
diff --git a/util/glgen/glgen.pro b/util/glgen/glgen.pro
new file mode 100644
index 0000000000..9208ba9e8e
--- /dev/null
+++ b/util/glgen/glgen.pro
@@ -0,0 +1,35 @@
+QT -= gui
+CONFIG += console
+CONFIG -= app_bundle
+
+# Uncomment following to enable debug output
+#DEFINES += SPECPARSER_DEBUG
+
+TEMPLATE = app
+TARGET = glgen
+
+SOURCES += main.cpp \
+ specparser.cpp \
+ codegenerator.cpp
+
+HEADERS += \
+ specparser.h \
+ codegenerator.h
+
+OTHER_FILES += \
+ qopenglversionfunctions.h.header \
+ qopenglversionfunctions.h.footer \
+ qopenglversionfunctions.cpp.header \
+ qopenglversionfunctions.cpp.footer \
+ qopenglversionfunctions__VERSION__.cpp.footer \
+ qopenglversionfunctions__VERSION__.cpp.header \
+ qopenglversionfunctions__VERSION__.h.footer \
+ qopenglversionfunctions__VERSION__.h.header \
+ qopenglversionfunctionsfactory_p.h.header \
+ qopenglextensions.cpp.header \
+ qopenglextensions.cpp.footer \
+ qopenglextensions.h.header \
+ qopenglextensions.h.footer \
+ qopenglversionfunctionsfactory.cpp.header \
+ qopenglversionfunctionsfactory.cpp.footer \
+ README.txt
diff --git a/util/glgen/main.cpp b/util/glgen/main.cpp
new file mode 100644
index 0000000000..15c311caf3
--- /dev/null
+++ b/util/glgen/main.cpp
@@ -0,0 +1,61 @@
+/***************************************************************************
+**
+** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB)
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the utilities 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 "codegenerator.h"
+#include "specparser.h"
+
+int main(int argc, char *argv[])
+{
+ Q_UNUSED(argc);
+ Q_UNUSED(argv);
+
+ SpecParser parser;
+ parser.setTypeMapFileName(QStringLiteral("gl.tm"));
+ parser.setSpecFileName(QStringLiteral("gl.spec"));
+ parser.parse();
+
+ CodeGenerator generator;
+ generator.setParser(&parser);
+ generator.generateCoreClasses(QStringLiteral("qopenglversionfunctions"));
+ generator.generateExtensionClasses(QStringLiteral("qopenglextensions"));
+
+ return 0;
+}
diff --git a/util/glgen/qopenglextensions.cpp.footer b/util/glgen/qopenglextensions.cpp.footer
new file mode 100644
index 0000000000..d7bd157743
--- /dev/null
+++ b/util/glgen/qopenglextensions.cpp.footer
@@ -0,0 +1,792 @@
+
+#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/util/glgen/qopenglextensions.cpp.header b/util/glgen/qopenglextensions.cpp.header
new file mode 100644
index 0000000000..6a9f639d5d
--- /dev/null
+++ b/util/glgen/qopenglextensions.cpp.header
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** 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 <QtGui/qopenglcontext.h>
+
+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)
+
diff --git a/util/glgen/qopenglextensions.h.footer b/util/glgen/qopenglextensions.h.footer
new file mode 100644
index 0000000000..b8a8e6f267
--- /dev/null
+++ b/util/glgen/qopenglextensions.h.footer
@@ -0,0 +1,1520 @@
+
+#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/util/glgen/qopenglextensions.h.header b/util/glgen/qopenglextensions.h.header
new file mode 100644
index 0000000000..89e248fc33
--- /dev/null
+++ b/util/glgen/qopenglextensions.h.header
@@ -0,0 +1,208 @@
+/****************************************************************************
+**
+** 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 <QtCore/QtGlobal>
+#include <QtGui/qopengl.h>
+
+class QOpenGLContext;
+
+QT_BEGIN_NAMESPACE
+
+#if 0
+// silence syncqt warnings
+#pragma qt_class(QOpenGLExtensions)
+#pragma qt_sync_stop_processing
+#endif
+
+#if !defined(QT_OPENGL_ES_2)
+// This block is copied from glext.h and defines the types needed by
+// a few extension classes. This may need updating in glgen when a new
+// OpenGL release is made and this file is regenerated.
+
+#include <stddef.h>
+#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 <inttypes.h>
+#elif defined(__sun__) || defined(__digital__)
+#include <inttypes.h>
+#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 <inttypes.h>
+#elif defined(__SCO__) || defined(__USLC__)
+#include <stdint.h>
+#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 <stdint.h>
+#elif defined(_WIN32)
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#else
+/* Fallback if nothing above works */
+#include <inttypes.h>
+#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
+
+struct QOpenGLFunctionsPrivate;
+
+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)
+
diff --git a/util/glgen/qopenglversionfunctions.cpp.footer b/util/glgen/qopenglversionfunctions.cpp.footer
new file mode 100644
index 0000000000..f003b56097
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions.cpp.footer
@@ -0,0 +1,8 @@
+
+#else
+
+// No backends for OpenGL ES 2
+
+#endif // !QT_OPENGL_ES_2
+
+QT_END_NAMESPACE
diff --git a/util/glgen/qopenglversionfunctions.cpp.header b/util/glgen/qopenglversionfunctions.cpp.header
new file mode 100644
index 0000000000..316b79011d
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions.cpp.header
@@ -0,0 +1,220 @@
+/****************************************************************************
+**
+** 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_<MAJOR VERSION>_<MINOR VERSION>[_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<QOpenGLContext*>(context);
+}
+
+QOpenGLContext *QAbstractOpenGLFunctions::owningContext() const
+{
+ Q_D(const QAbstractOpenGLFunctions);
+ return d->owningContext;
+}
+
+#if !defined(QT_OPENGL_ES_2)
+
diff --git a/util/glgen/qopenglversionfunctions.h.footer b/util/glgen/qopenglversionfunctions.h.footer
new file mode 100644
index 0000000000..dc29c75177
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions.h.footer
@@ -0,0 +1,13 @@
+
+#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/util/glgen/qopenglversionfunctions.h.header b/util/glgen/qopenglversionfunctions.h.header
new file mode 100644
index 0000000000..3bd28fc52d
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions.h.header
@@ -0,0 +1,163 @@
+/****************************************************************************
+**
+** 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 <QtCore/QtGlobal>
+#include <QtCore/qhash.h>
+#include <QtCore/qpair.h>
+#include <QtGui/qopengl.h>
+
+class QOpenGLContext;
+
+QT_BEGIN_NAMESPACE
+
+#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<int, int> version;
+ OpenGLStatus status;
+};
+
+inline uint qHash(const QOpenGLVersionStatus &v, uint seed)
+{
+ return qHash(static_cast<int>(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)
+
diff --git a/util/glgen/qopenglversionfunctions__VERSION__.cpp.footer b/util/glgen/qopenglversionfunctions__VERSION__.cpp.footer
new file mode 100644
index 0000000000..b81ea7b6ea
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions__VERSION__.cpp.footer
@@ -0,0 +1,2 @@
+
+QT_END_NAMESPACE
diff --git a/util/glgen/qopenglversionfunctions__VERSION__.cpp.header b/util/glgen/qopenglversionfunctions__VERSION__.cpp.header
new file mode 100644
index 0000000000..f92c0dd3fd
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions__VERSION__.cpp.header
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** 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__VERSION__.h"
+#include "qopenglcontext.h"
+
+QT_BEGIN_NAMESPACE
+
diff --git a/util/glgen/qopenglversionfunctions__VERSION__.h.footer b/util/glgen/qopenglversionfunctions__VERSION__.h.footer
new file mode 100644
index 0000000000..02db4d3a13
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions__VERSION__.h.footer
@@ -0,0 +1,6 @@
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_OPENGL
+
+#endif
diff --git a/util/glgen/qopenglversionfunctions__VERSION__.h.header b/util/glgen/qopenglversionfunctions__VERSION__.h.header
new file mode 100644
index 0000000000..b3d097c2f9
--- /dev/null
+++ b/util/glgen/qopenglversionfunctions__VERSION__.h.header
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** 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__VERSION___H
+#define QOPENGLVERSIONFUNCTIONS__VERSION___H
+
+#ifndef QT_NO_OPENGL
+
+#include <QtGui/QOpenGLVersionFunctions>
+#include <QtGui/qopenglcontext.h>
+
+QT_BEGIN_NAMESPACE
+
diff --git a/util/glgen/qopenglversionfunctionsfactory.cpp.footer b/util/glgen/qopenglversionfunctionsfactory.cpp.footer
new file mode 100644
index 0000000000..b81ea7b6ea
--- /dev/null
+++ b/util/glgen/qopenglversionfunctionsfactory.cpp.footer
@@ -0,0 +1,2 @@
+
+QT_END_NAMESPACE
diff --git a/mkspecs/unsupported/linux-android-armeabi-v7a-g++/qplatformdefs.h b/util/glgen/qopenglversionfunctionsfactory.cpp.header
index 38b5f6e6d2..6be93102dc 100644
--- a/mkspecs/unsupported/linux-android-armeabi-v7a-g++/qplatformdefs.h
+++ b/util/glgen/qopenglversionfunctionsfactory.cpp.header
@@ -1,9 +1,9 @@
/****************************************************************************
**
-** Copyright (C) 2012 Collabora Ltd, author <robin.burchell@collabora.co.uk>
+** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB)
** 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 QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
@@ -37,6 +37,16 @@
**
** $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 "../../common/android/qplatformdefs.h"
+#include "qopenglversionfunctionsfactory_p.h"
+
diff --git a/util/glgen/qopenglversionfunctionsfactory_p.h.header b/util/glgen/qopenglversionfunctionsfactory_p.h.header
new file mode 100644
index 0000000000..2312e900f9
--- /dev/null
+++ b/util/glgen/qopenglversionfunctionsfactory_p.h.header
@@ -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 <QtCore/QtGlobal>
+#include <QtGui/qopenglcontext.h>
+
+QT_BEGIN_NAMESPACE
+
+class QAbstractOpenGLFunctions;
+
+class QOpenGLVersionFunctionsFactory
+{
+public:
+ static QAbstractOpenGLFunctions *create(const QOpenGLVersionProfile &versionProfile);
+};
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_OPENGL
+
+#endif
diff --git a/util/glgen/specparser.cpp b/util/glgen/specparser.cpp
new file mode 100644
index 0000000000..514a700644
--- /dev/null
+++ b/util/glgen/specparser.cpp
@@ -0,0 +1,307 @@
+/***************************************************************************
+**
+** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB)
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the utilities 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 "specparser.h"
+
+#include <QDebug>
+#include <QFile>
+#include <QRegExp>
+#include <QStringList>
+#include <QTextStream>
+
+#ifdef SPECPARSER_DEBUG
+#define qSpecParserDebug qDebug
+#else
+#define qSpecParserDebug QT_NO_QDEBUG_MACRO
+#endif
+
+SpecParser::SpecParser()
+{
+}
+
+void SpecParser::parse()
+{
+ // Get the mapping form generic types to specific types suitable for use in C-headers
+ if (!parseTypeMap())
+ return;
+
+ // Open up a stream on the actual OpenGL function spec file
+ QFile file(m_specFileName);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ qWarning() << "Failed to open spec file:" << m_specFileName << "Aborting";
+ return;
+ }
+
+ QTextStream stream(&file);
+
+ // Extract the info that we need
+ parseFunctions(stream);
+}
+
+bool SpecParser::parseTypeMap()
+{
+ QFile file(m_typeMapFileName);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ qWarning() << "Failed to open spec file:" << m_specFileName << "Aborting";
+ return false;
+ }
+
+ QTextStream stream(&file);
+
+ static QRegExp typeMapRegExp("([^,]+)\\W+([^,]+)");
+
+ while (!stream.atEnd()) {
+ QString line = stream.readLine();
+
+ if (line.startsWith(QStringLiteral("#")))
+ continue;
+
+ if (typeMapRegExp.indexIn(line) != -1) {
+ QString key = typeMapRegExp.cap(1).simplified();
+ QString value = typeMapRegExp.cap(2).simplified();
+
+ // Special case for void
+ if (value == QStringLiteral("*"))
+ value = QStringLiteral("void");
+
+ m_typeMap.insert(key, value);
+ qSpecParserDebug() << "Found type mapping from" << key << "=>" << value;
+ }
+ }
+
+ return true;
+}
+
+void SpecParser::parseEnums()
+{
+}
+
+void SpecParser::parseFunctions(QTextStream &stream)
+{
+ static QRegExp functionRegExp("^(\\w+)\\(.*\\)");
+ static QRegExp returnRegExp("^\\treturn\\s+(\\S+)");
+ static QRegExp argumentRegExp("param\\s+(\\S+)\\s+(\\S+) (\\S+) (\\S+)");
+ static QRegExp versionRegExp("^\\tversion\\s+(\\S+)");
+ static QRegExp deprecatedRegExp("^\\tdeprecated\\s+(\\S+)");
+ static QRegExp categoryRegExp("^\\tcategory\\s+(\\S+)");
+ static QRegExp categoryVersionRegExp("VERSION_(\\d)_(\\d)");
+ static QRegExp extToCoreVersionRegExp("passthru:\\s/\\*\\sOpenGL\\s(\\d)\\.(\\d)\\s.*\\sextensions:");
+ static QRegExp extToCoreRegExp("passthru:\\s/\\*\\s(ARB_\\S*)\\s.*\\*/");
+
+ Function currentFunction;
+ VersionProfile currentVersionProfile;
+ QString currentCategory;
+ bool haveVersionInfo = false;
+ bool acceptCurrentFunctionInCore = false;
+ bool acceptCurrentFunctionInExtension = false;
+
+ QHash<QString, Version> extensionsNowInCore;
+ Version extToCoreCurrentVersion;
+ int functionCount = 0;
+
+ QSet<Version> versions;
+
+ while (!stream.atEnd()) {
+ QString line = stream.readLine();
+ if (line.startsWith("#"))
+ continue;
+
+ if (functionRegExp.indexIn(line) != -1) {
+
+ if (!currentFunction.name.isEmpty()) {
+
+ // NB - Special handling!
+ // Versions 4.2 and 4.3 (and probably newer) add functionality by
+ // subsuming extensions such as ARB_texture_storage. However, some extensions
+ // also include functions to interact with the EXT_direct_state_access
+ // extension. These functions should be added to the DSA extension rather
+ // than the core functionality. The core will already contain non-DSA
+ // versions of these functions.
+ if (acceptCurrentFunctionInCore && currentFunction.name.endsWith(QStringLiteral("EXT"))) {
+ acceptCurrentFunctionInCore = false;
+ acceptCurrentFunctionInExtension = true;
+ currentCategory = QStringLiteral("EXT_direct_state_access");
+ }
+
+ // Finish off previous function (if any) by inserting it into the core
+ // functionality or extension functionality (or both)
+ if (acceptCurrentFunctionInCore) {
+ m_functions.insert(currentVersionProfile, currentFunction);
+ versions.insert(currentVersionProfile.version);
+ }
+
+ if (acceptCurrentFunctionInExtension)
+ m_extensionFunctions.insert(currentCategory, currentFunction);
+ }
+
+ // Start a new function
+ ++functionCount;
+ haveVersionInfo = false;
+ acceptCurrentFunctionInCore = true;
+ acceptCurrentFunctionInExtension = false;
+ currentCategory = QString();
+ currentFunction = Function();
+
+ // We assume a core function unless we find a deprecated flag (see below)
+ currentVersionProfile = VersionProfile();
+ currentVersionProfile.profile = VersionProfile::CoreProfile;
+
+ // Extract the function name
+ QString functionName = functionRegExp.cap(1);
+ currentFunction.name = functionName;
+ qSpecParserDebug() << "Found function:" << functionName;
+
+ } else if (argumentRegExp.indexIn(line) != -1) {
+ // Extract info about this function argument
+ Argument arg;
+ arg.name = argumentRegExp.cap(1);
+
+ QString type = argumentRegExp.cap(2); // Lookup in type map
+ arg.type = m_typeMap.value(type);
+
+ QString direction = argumentRegExp.cap(3);
+ if (direction == QStringLiteral("in")) {
+ arg.direction = Argument::In;
+ } else if (direction == QStringLiteral("out")) {
+ arg.direction = Argument::Out;
+ } else {
+ qWarning() << "Invalid argument direction found:" << direction;
+ acceptCurrentFunctionInCore = false;
+ }
+
+ QString mode = argumentRegExp.cap(4);
+ if (mode == QStringLiteral("value")) {
+ arg.mode = Argument::Value;
+ } else if (mode == QStringLiteral("array")) {
+ arg.mode = Argument::Array;
+ } else if (mode == QStringLiteral("reference")) {
+ arg.mode = Argument::Reference;
+ } else {
+ qWarning() << "Invalid argument mode found:" << mode;
+ acceptCurrentFunctionInCore = false;
+ }
+
+ qSpecParserDebug() << " argument:" << arg.type << arg.name;
+ currentFunction.arguments.append(arg);
+
+ } else if (returnRegExp.indexIn(line) != -1) {
+ // Lookup the return type from the typemap
+ QString returnTypeKey = returnRegExp.cap(1).simplified();
+ if (!m_typeMap.contains(returnTypeKey)) {
+ qWarning() << "Unknown return type found:" << returnTypeKey;
+ acceptCurrentFunctionInCore = false;
+ }
+ QString returnType = m_typeMap.value(returnTypeKey);
+ qSpecParserDebug() << " return type:" << returnType;
+ currentFunction.returnType = returnType;
+
+ } else if (versionRegExp.indexIn(line) != -1 && !haveVersionInfo) { // Only use version line if no other source
+ // Extract the OpenGL version in which this function was introduced
+ QString version = versionRegExp.cap(1);
+ qSpecParserDebug() << " version:" << version;
+ QStringList parts = version.split(QLatin1Char('.'));
+ if (parts.size() != 2) {
+ qWarning() << "Found invalid version number";
+ continue;
+ }
+ int majorVersion = parts.first().toInt();
+ int minorVersion = parts.last().toInt();
+ Version v;
+ v.major = majorVersion;
+ v.minor = minorVersion;
+ currentVersionProfile.version = v;
+
+ } else if (deprecatedRegExp.indexIn(line) != -1) {
+ // Extract the OpenGL version in which this function was deprecated.
+ // If it is OpenGL 3.1 then it must be a compatibility profile function
+ QString deprecatedVersion = deprecatedRegExp.cap(1).simplified();
+ if (deprecatedVersion == QStringLiteral("3.1"))
+ currentVersionProfile.profile = VersionProfile::CompatibilityProfile;
+
+ } else if (categoryRegExp.indexIn(line) != -1) {
+ // Extract the category for this function
+ QString category = categoryRegExp.cap(1).simplified();
+ qSpecParserDebug() << " category:" << category;
+
+ if (categoryVersionRegExp.indexIn(category) != -1) {
+ // Use the version info in the category in preference to the version
+ // entry as this is more applicable and consistent
+ int majorVersion = categoryVersionRegExp.cap(1).toInt();
+ int minorVersion = categoryVersionRegExp.cap(2).toInt();
+
+ Version v;
+ v.major = majorVersion;
+ v.minor = minorVersion;
+ currentVersionProfile.version = v;
+ haveVersionInfo = true;
+
+ } else {
+ // Make a note of the extension name and tag this function as being part of an extension
+ qSpecParserDebug() << "Found category =" << category;
+ currentCategory = category;
+ acceptCurrentFunctionInExtension = true;
+
+ // See if this category (extension) is in our set of extensions that
+ // have now been folded into the core feature set
+ if (extensionsNowInCore.contains(category)) {
+ currentVersionProfile.version = extensionsNowInCore.value(category);
+ haveVersionInfo = true;
+ } else {
+ acceptCurrentFunctionInCore = false;
+ }
+ }
+
+ } else if (extToCoreVersionRegExp.indexIn(line) != -1) {
+ qSpecParserDebug() << line;
+ int majorVersion = extToCoreVersionRegExp.cap(1).toInt();
+ int minorVersion = extToCoreVersionRegExp.cap(2).toInt();
+ extToCoreCurrentVersion.major = majorVersion;
+ extToCoreCurrentVersion.minor = minorVersion;
+
+ } else if (extToCoreRegExp.indexIn(line) != -1) {
+ QString extension = extToCoreRegExp.cap(1);
+ extensionsNowInCore.insert(extension, extToCoreCurrentVersion);
+ }
+ }
+
+ m_versions = versions.toList();
+ qSort(m_versions);
+}
diff --git a/util/glgen/specparser.h b/util/glgen/specparser.h
new file mode 100644
index 0000000000..e455f6579c
--- /dev/null
+++ b/util/glgen/specparser.h
@@ -0,0 +1,209 @@
+/***************************************************************************
+**
+** Copyright (C) 2013 Klaralvdalens Datakonsult AB (KDAB)
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the utilities 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 SPECPARSER_H
+#define SPECPARSER_H
+
+#include <QStringList>
+#include <QVariant>
+
+class QTextStream;
+
+struct Version {
+ int major;
+ int minor;
+};
+
+inline bool operator == (const Version &lhs, const Version &rhs)
+{
+ return (lhs.major == rhs.major && lhs.minor == rhs.minor);
+}
+
+inline bool operator < (const Version &lhs, const Version &rhs)
+{
+ if (lhs.major != rhs.major)
+ return (lhs.major < rhs.major);
+ else
+ return (lhs.minor < rhs.minor);
+}
+
+inline bool operator > (const Version &lhs, const Version &rhs)
+{
+ if (lhs.major != rhs.major)
+ return (lhs.major > rhs.major);
+ else
+ return (lhs.minor > rhs.minor);
+}
+
+inline uint qHash(const Version &v)
+{
+ return qHash(v.major * 100 + v.minor * 10);
+}
+
+struct VersionProfile
+{
+ enum OpenGLProfile {
+ CoreProfile = 0,
+ CompatibilityProfile
+ };
+
+ inline bool hasProfiles() const
+ {
+ return ( version.major > 3
+ || (version.major == 3 && version.minor > 1));
+ }
+
+ Version version;
+ OpenGLProfile profile;
+};
+
+inline bool operator == (const VersionProfile &lhs, const VersionProfile &rhs)
+{
+ if (lhs.profile != rhs.profile)
+ return false;
+ return lhs.version == rhs.version;
+}
+
+inline bool operator < (const VersionProfile &lhs, const VersionProfile &rhs)
+{
+ if (lhs.profile != rhs.profile)
+ return (lhs.profile < rhs.profile);
+ return (lhs.version < rhs.version);
+}
+
+inline uint qHash(const VersionProfile &v)
+{
+ return qHash(static_cast<int>(v.profile * 1000) + v.version.major * 100 + v.version.minor * 10);
+}
+
+struct Argument
+{
+ enum Direction {
+ In = 0,
+ Out
+ };
+
+ enum Mode {
+ Value = 0,
+ Array,
+ Reference
+ };
+
+ QString type;
+ QString name;
+ Direction direction;
+ Mode mode;
+};
+
+struct Function
+{
+ QString returnType;
+ QString name;
+ QList<Argument> arguments;
+};
+
+typedef QList<Function> FunctionList;
+typedef QMap<VersionProfile, FunctionList> FunctionCollection;
+
+class SpecParser
+{
+public:
+ explicit SpecParser();
+
+ QString specFileName() const
+ {
+ return m_specFileName;
+ }
+
+ QString typeMapFileName() const
+ {
+ return m_typeMapFileName;
+ }
+
+ QList<Version> versions() const {return m_versions;}
+ QList<VersionProfile> versionProfiles() const {return m_functions.uniqueKeys();}
+
+ QList<Function> functionsForVersion(const VersionProfile &v) const
+ {
+ return m_functions.values(v);
+ }
+
+ QStringList extensions() const
+ {
+ return QStringList(m_extensionFunctions.uniqueKeys());
+ }
+
+ QList<Function> functionsForExtension(const QString &extension)
+ {
+ return m_extensionFunctions.values(extension);
+ }
+
+ void setSpecFileName(QString arg)
+ {
+ m_specFileName = arg;
+ }
+
+ void setTypeMapFileName(QString arg)
+ {
+ m_typeMapFileName = arg;
+ }
+
+ void parse();
+
+protected:
+ bool parseTypeMap();
+ void parseEnums();
+ void parseFunctions(QTextStream &stream);
+
+private:
+ QString m_specFileName;
+ QString m_typeMapFileName;
+
+ QMap<QString, QString> m_typeMap;
+ QMultiMap<VersionProfile, Function> m_functions;
+
+ QList<Version> m_versions;
+
+ // Extension support
+ QMultiMap<QString, Function> m_extensionFunctions;
+};
+
+#endif // SPECPARSER_H
diff --git a/util/lexgen/generator.cpp b/util/lexgen/generator.cpp
index a6fc93c0ca..06ba586c1f 100644
--- a/util/lexgen/generator.cpp
+++ b/util/lexgen/generator.cpp
@@ -48,7 +48,7 @@ void Function::printDeclaration(CodeBlock &block, const QString &funcNamePrefix)
block << (iline ? "inline " : "") << signature(funcNamePrefix) << (iline ? QLatin1String(" {") : QLatin1String(";"));
if (!iline)
return;
-
+
block.indent();
QString tmp = body;
if (tmp.endsWith(QLatin1Char('\n')))
@@ -81,7 +81,7 @@ QString Function::definition() const
QString result;
result += signature();
result += QLatin1String("\n{\n");
-
+
QString tmp = body;
if (tmp.endsWith(QLatin1Char('\n')))
@@ -92,7 +92,7 @@ QString Function::definition() const
tmp.replace(QLatin1Char('\n'), QLatin1String("\n "));
result += tmp;
-
+
result += QLatin1String("\n}\n");
return result;
@@ -102,16 +102,16 @@ void Class::Section::printDeclaration(const Class *klass, CodeBlock &block) cons
{
foreach (Function ctor, constructors)
ctor.printDeclaration(block, klass->name());
-
+
if (!constructors.isEmpty())
block.addNewLine();
-
+
foreach (Function func, functions)
func.printDeclaration(block);
-
+
if (!functions.isEmpty())
block.addNewLine();
-
+
foreach (QString var, variables)
block << var << ';';
}
@@ -133,13 +133,13 @@ void Class::addConstructor(Access access, const QString &body, const QString &_a
QString Class::Section::definition(const Class *klass) const
{
QString result;
-
+
foreach (Function ctor, constructors) {
ctor.setName(klass->name() + "::" + klass->name() + ctor.name());
result += ctor.definition();
result += QLatin1Char('\n');
}
-
+
foreach (Function func, functions) {
if (!func.hasBody()) continue;
func.setName(klass->name() + "::" + func.name());
@@ -153,10 +153,10 @@ QString Class::Section::definition(const Class *klass) const
QString Class::declaration() const
{
CodeBlock block;
-
+
block << QLatin1String("class ") << cname;
block << "{";
-
+
if (!sections[PublicMember].isEmpty()) {
block << "public:";
block.indent();
@@ -170,7 +170,7 @@ QString Class::declaration() const
sections[ProtectedMember].printDeclaration(this, block);
block.outdent();
}
-
+
if (!sections[PrivateMember].isEmpty()) {
block << "private:";
block.indent();
@@ -180,7 +180,7 @@ QString Class::declaration() const
block << "};";
block.addNewLine();
-
+
return block.toString();
}
@@ -406,12 +406,12 @@ void Generator::generateTransitions(CodeBlock &body, const TransitionMap &transi
QString Generator::generate()
{
Class klass(cfg.className);
-
+
klass.addMember(Class::PublicMember, "QString input");
klass.addMember(Class::PublicMember, "int pos");
klass.addMember(Class::PublicMember, "int lexemStart");
klass.addMember(Class::PublicMember, "int lexemLength");
-
+
{
CodeBlock body;
body << "input = inp;";
@@ -420,7 +420,7 @@ QString Generator::generate()
body << "lexemLength = 0;";
klass.addConstructor(Class::PublicMember, body, "const QString &inp");
}
-
+
{
Function next("QChar", "next()");
next.setInline(true);
@@ -430,7 +430,7 @@ QString Generator::generate()
next.addBody("return (pos < input.length()) ? input.at(pos++).toLower() : QChar();");
klass.addMember(Class::PublicMember, next);
}
-
+
/*
{
Function lexem("QString", "lexem()");
@@ -450,7 +450,7 @@ QString Generator::generate()
Function lexFunc;
lexFunc.setReturnType("int");
lexFunc.setName("lex()");
-
+
CodeBlock body;
body << "lexemStart = pos;";
body << "lexemLength = 0;";
@@ -487,14 +487,14 @@ QString Generator::generate()
body.outdent();
body.indent();
-
+
if (!dfa.at(i).transitions.isEmpty()) {
body << "ch = next();";
generateTransitions(body, dfa.at(i).transitions);
}
-
+
body << "goto out;";
-
+
body.outdent();
}
@@ -512,9 +512,9 @@ QString Generator::generate()
body.outdent();
body << "}";
body << "return token;";
-
+
lexFunc.addBody(body);
-
+
klass.addMember(Class::PublicMember, lexFunc);
QString header;
@@ -526,7 +526,7 @@ QString Generator::generate()
}
header += QLatin1String("// auto generated. DO NOT EDIT.\n");
-
+
return header + klass.declaration() + klass.definition();
}
diff --git a/util/lexgen/generator.h b/util/lexgen/generator.h
index 7037f13018..c56ee20756 100644
--- a/util/lexgen/generator.h
+++ b/util/lexgen/generator.h
@@ -82,11 +82,11 @@ public:
delete shared;
}
}
-
+
template <typename T>
LineStream &operator<<(const T &value)
{ (*shared->stream) << value; return *this; }
-
+
SharedStream *shared;
};
@@ -101,11 +101,11 @@ public:
template <typename T>
LineStream operator<<(const T &value)
{ stream << indentStr; stream << value; return LineStream(&stream); }
-
+
inline void addNewLine() { stream << endl; }
-
+
inline QString toString() const { stream.flush(); return output; }
-
+
private:
QString output;
mutable QTextStream stream;
@@ -121,20 +121,20 @@ public:
inline void setName(const QString &name) { fname = name; }
inline QString name() const { return fname; }
-
+
inline void setInline(bool i) { iline = i; }
inline bool isInline() const { return iline; }
-
+
inline void setReturnType(const QString &type) { rtype = type; }
inline QString returnType() const { return rtype; }
-
+
inline void addBody(const QString &_body) { body += _body; }
inline void addBody(const CodeBlock &block) { body += block.toString(); }
inline bool hasBody() const { return !body.isEmpty(); }
-
+
inline void setConst(bool konst) { cnst = konst; }
inline bool isConst() const { return cnst; }
-
+
void printDeclaration(CodeBlock &block, const QString &funcNamePrefix = QString()) const;
QString definition() const;
@@ -157,19 +157,19 @@ public:
inline void setName(const QString &name) { cname = name; }
inline QString name() const { return cname; }
-
+
inline void addMember(Access access, const QString &name)
{ sections[access].variables.append(name); }
inline void addMember(Access access, const Function &func)
{ sections[access].functions.append(func); }
-
+
void addConstructor(Access access, const QString &body, const QString &args = QString());
inline void addConstructor(Access access, const CodeBlock &body, const QString &args = QString())
{ addConstructor(access, body.toString(), args); }
-
+
QString declaration() const;
QString definition() const;
-
+
private:
QString cname;
struct Section
@@ -177,10 +177,10 @@ private:
QVector<Function> functions;
QStringList variables;
QVector<Function> constructors;
-
+
inline bool isEmpty() const
{ return functions.isEmpty() && variables.isEmpty() && constructors.isEmpty(); }
-
+
void printDeclaration(const Class *klass, CodeBlock &block) const;
QString definition(const Class *klass) const;
};
@@ -192,9 +192,9 @@ class Generator
{
public:
Generator(const DFA &dfa, const Config &config);
-
+
QString generate();
-
+
private:
void generateTransitions(CodeBlock &body, const TransitionMap &transitions);
bool isSingleReferencedFinalState(int i) const;
diff --git a/util/lexgen/main.cpp b/util/lexgen/main.cpp
index 7fdf587ae9..a6cd6ee94f 100644
--- a/util/lexgen/main.cpp
+++ b/util/lexgen/main.cpp
@@ -149,7 +149,7 @@ static QSet<InputType> determineMaxInputSet(const ConfigFile::Section &section)
if (inputTypeName == "quint8") {
for (int i = 1; i < 256; ++i)
set.insert(i);
- } /* else if ### */
+ } /* else if ### */
else {
qWarning("Error: Unknown input type '%s'", qPrintable(inputTypeName));
return QSet<InputType>();
@@ -313,7 +313,7 @@ int main(int argc, char **argv)
qDebug() << "Error while tokenizing!";
} else {
Generator gen(machine, cfg);
- QTextStream(stdout)
+ QTextStream(stdout)
<< gen.generate();
}
diff --git a/util/lexgen/nfa.cpp b/util/lexgen/nfa.cpp
index 5ae3beade5..1414d1eedd 100644
--- a/util/lexgen/nfa.cpp
+++ b/util/lexgen/nfa.cpp
@@ -288,7 +288,6 @@ DFA NFA::toDFA() const
if (transition.key() == Epsilon && epsilonStates.contains(transition.value()))
epsilonStates.insert(i, epsilonStates.value(transition.value()));
}
-
} while (lastCount != epsilonStates.count());
for (int i = 0; i < states.count(); ++i) {
@@ -313,7 +312,6 @@ DFA NFA::toDFA() const
*/
}
-
QSet<InputType> validInput;
foreach (const State &s, states)
for (TransitionMap::ConstIterator it = s.transitions.constBegin(),
@@ -504,5 +502,3 @@ DFA DFA::minimize() const
return *this;
}
-
-
diff --git a/util/lexgen/nfa.h b/util/lexgen/nfa.h
index 3eae9bcef8..0d8394a926 100644
--- a/util/lexgen/nfa.h
+++ b/util/lexgen/nfa.h
@@ -92,7 +92,7 @@ public:
static NFA applyQuantity(const NFA &a, int minOccurrences, int maxOccurrences);
void setTerminationSymbol(const QString &symbol);
-
+
DFA toDFA() const;
inline bool isEmpty() const { return states.isEmpty(); }
@@ -113,7 +113,7 @@ private:
inline void assertValidState(int state)
{ Q_UNUSED(state); Q_ASSERT(state >= 0); Q_ASSERT(state < states.count()); }
-
+
#if defined(AUTOTEST)
public:
#endif
diff --git a/util/lexgen/tests/tst_lexgen.cpp b/util/lexgen/tests/tst_lexgen.cpp
index a3741d2373..f45d295633 100644
--- a/util/lexgen/tests/tst_lexgen.cpp
+++ b/util/lexgen/tests/tst_lexgen.cpp
@@ -227,7 +227,7 @@ void tst_LexGen::lexgen_data()
d.cd("testdata");
foreach (QString test, d.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
QString dir = d.absoluteFilePath(test) + '/';
- QTest::newRow(qPrintable(test))
+ QTest::newRow(qPrintable(test))
<< dir + "rules.lexgen"
<< dir + "input"
<< dir + "output"
diff --git a/util/local_database/enumdata.py b/util/local_database/enumdata.py
index 7d802e7492..e889dfbf91 100644
--- a/util/local_database/enumdata.py
+++ b/util/local_database/enumdata.py
@@ -173,7 +173,7 @@ language_list = {
125 : [ "Turkish", "tr" ],
126 : [ "Turkmen", "tk" ],
127 : [ "Tahitian", "ty" ],
- 128 : [ "Uigur", "ug" ],
+ 128 : [ "Uighur", "ug" ],
129 : [ "Ukrainian", "uk" ],
130 : [ "Urdu", "ur" ],
131 : [ "Uzbek", "uz" ], # macrolanguage
@@ -305,7 +305,58 @@ language_list = {
257 : [ "Ngomba", "jgo" ],
258 : [ "Kako", "kkj" ],
259 : [ "Meta", "mgo" ],
- 260 : [ "Ngiemboon", "nnh" ]
+ 260 : [ "Ngiemboon", "nnh" ],
+ 261 : [ "Aragonese", "an" ],
+ 262 : [ "Akkadian", "akk" ],
+ 263 : [ "AncientEgyptian", "egy" ],
+ 264 : [ "AncientGreek", "grc" ],
+ 265 : [ "Aramaic", "arc" ],
+ 266 : [ "Balinese", "ban" ],
+ 267 : [ "Bamun", "bax" ],
+ 268 : [ "BatakToba", "bbc" ],
+ 269 : [ "Buginese", "bug" ],
+ 270 : [ "Buhid", "bku" ],
+ 271 : [ "Carian", "xcr" ],
+ 272 : [ "Chakma", "ccp" ],
+ 273 : [ "ClassicalMandaic", "myz" ],
+ 274 : [ "Coptic", "cop" ],
+ 275 : [ "Dogri", "doi" ], # macrolanguage
+ 276 : [ "EasternCham", "cjm" ],
+ 277 : [ "EasternKayah", "eky" ],
+ 278 : [ "Etruscan", "ett" ],
+ 279 : [ "Gothic", "got" ],
+ 280 : [ "Hanunoo", "hnn" ],
+ 281 : [ "Ingush", "inh" ],
+ 282 : [ "LargeFloweryMiao", "hmd" ],
+ 283 : [ "Lepcha", "lep" ],
+ 284 : [ "Limbu", "lif" ],
+ 285 : [ "Lisu", "lis" ],
+ 286 : [ "Lu", "khb" ],
+ 287 : [ "Lycian", "xlc" ],
+ 288 : [ "Lydian", "xld" ],
+ 289 : [ "Mandingo", "man" ], # macrolanguage
+ 290 : [ "Manipuri", "mni" ],
+ 291 : [ "Meroitic", "xmr" ],
+ 292 : [ "NorthernThai", "nod" ],
+ 293 : [ "OldIrish", "sga" ],
+ 294 : [ "OldNorse", "non" ],
+ 295 : [ "OldPersian", "peo" ],
+ 296 : [ "OldTurkish", "otk" ],
+ 297 : [ "Pahlavi", "pal" ],
+ 298 : [ "Parthian", "xpr" ],
+ 299 : [ "Phoenician", "phn" ],
+ 300 : [ "PrakritLanguage", "pra" ],
+ 301 : [ "Rejang", "rej" ],
+ 302 : [ "Sabaean", "xsa" ],
+ 303 : [ "Samaritan", "smp" ],
+ 304 : [ "Santali", "sat" ],
+ 305 : [ "Saurashtra", "saz" ],
+ 306 : [ "Sora", "srb" ],
+ 307 : [ "Sylheti", "syl" ],
+ 308 : [ "Tagbanwa", "tbw" ],
+ 309 : [ "TaiDam", "blt" ],
+ 310 : [ "TaiNua", "tdd" ],
+ 311 : [ "Ugaritic", "uga" ]
}
country_list = {
@@ -602,9 +653,82 @@ script_list = {
30 : [ "Thai", "Thai" ],
31 : [ "Tibetan", "Tibt" ],
32 : [ "Sinhala", "Sinh" ],
- 33 : [ "Syriac", "Syri" ],
+ 33 : [ "Syriac", "Syrc" ],
34 : [ "Yi", "Yiii" ],
- 35 : [ "Vai", "Vaii" ]
+ 35 : [ "Vai", "Vaii" ],
+ 36 : [ "Avestan", "Avst" ],
+ 37 : [ "Balinese", "Bali" ],
+ 38 : [ "Bamum", "Bamu" ],
+ 39 : [ "Batak", "Batk" ],
+ 40 : [ "Bopomofo", "Bopo" ],
+ 41 : [ "Brahmi", "Brah" ],
+ 42 : [ "Buginese", "Bugi" ],
+ 43 : [ "Buhid", "Buhd" ],
+ 44 : [ "CanadianAboriginal", "Cans" ],
+ 45 : [ "Carian", "Cari" ],
+ 46 : [ "Chakma", "Cakm" ],
+ 47 : [ "Cham", "Cham" ],
+ 48 : [ "Coptic", "Copt" ],
+ 49 : [ "Cypriot", "Cprt" ],
+ 50 : [ "Egyptian Hieroglyphs", "Egyp" ],
+ 51 : [ "Fraser", "Lisu" ],
+ 52 : [ "Glagolitic", "Glag" ],
+ 53 : [ "Gothic", "Goth" ],
+ 54 : [ "Han", "Hani" ],
+ 55 : [ "Hangul", "Hang" ],
+ 56 : [ "Hanunoo", "Hano" ],
+ 57 : [ "Imperial Aramaic", "Armi" ],
+ 58 : [ "Inscriptional Pahlavi", "Phli" ],
+ 59 : [ "Inscriptional Parthian", "Prti" ],
+ 60 : [ "Javanese", "Java" ],
+ 61 : [ "Kaithi", "Kthi" ],
+ 62 : [ "Katakana", "Kana" ],
+ 63 : [ "Kayah Li", "Kali" ],
+ 64 : [ "Kharoshthi", "Khar" ],
+ 65 : [ "Lanna", "Lana" ],
+ 66 : [ "Lepcha", "Lepc" ],
+ 67 : [ "Limbu", "Limb" ],
+ 68 : [ "Linear B", "Linb" ],
+ 69 : [ "Lycian", "Lyci" ],
+ 70 : [ "Lydian", "Lydi" ],
+ 71 : [ "Mandaean", "Mand" ],
+ 72 : [ "Meitei Mayek", "Mtei" ],
+ 73 : [ "Meroitic", "Mero" ],
+ 74 : [ "Meroitic Cursive", "Merc" ],
+ 75 : [ "Nko", "Nkoo" ],
+ 76 : [ "New Tai Lue", "Talu" ],
+ 77 : [ "Ogham", "Ogam" ],
+ 78 : [ "Ol Chiki", "Olck" ],
+ 79 : [ "Old Italic", "Ital" ],
+ 80 : [ "Old Persian", "Xpeo" ],
+ 81 : [ "Old South Arabian", "Sarb" ],
+ 82 : [ "Orkhon", "Orkh" ],
+ 83 : [ "Osmanya", "Osma" ],
+ 84 : [ "Phags Pa", "Phag" ],
+ 85 : [ "Phoenician", "Phnx" ],
+ 86 : [ "Pollard Phonetic", "Plrd" ],
+ 87 : [ "Rejang", "Rjng" ],
+ 88 : [ "Runic", "Runr" ],
+ 89 : [ "Samaritan", "Samr" ],
+ 90 : [ "Saurashtra", "Saur" ],
+ 91 : [ "Sharada", "Shrd" ],
+ 92 : [ "Shavian", "Shaw" ],
+ 93 : [ "Sora Sompeng", "Sora" ],
+ 94 : [ "Cuneiform", "Xsux" ],
+ 95 : [ "Sundanese", "Sund" ],
+ 96 : [ "Syloti Nagri", "Sylo" ],
+ 97 : [ "Tagalog", "Tglg" ],
+ 98 : [ "Tagbanwa", "Tagb" ],
+ 99 : [ "Tai Le", "Tale" ],
+ 100 : [ "Tai Viet", "Tavt" ],
+ 101 : [ "Takri", "Takr" ],
+ 102 : [ "Ugaritic", "Ugar" ]
+
+# ### : [ "Blissymbols", "Blis" ],
+# ### : [ "Linear A", "Lina" ],
+# ### : [ "Naxi Geba", "Nkgb" ],
+# ### : [ "Pahawh Hmong", "Hmng" ],
+# ### : [ "Varang Kshiti", "Wara" ],
}
def countryCodeToId(code):
diff --git a/util/local_database/qlocalexml2cpp.py b/util/local_database/qlocalexml2cpp.py
index d3120d256f..b038eec6c4 100755
--- a/util/local_database/qlocalexml2cpp.py
+++ b/util/local_database/qlocalexml2cpp.py
@@ -899,6 +899,7 @@ def main():
qlocaleh_temp_file.write(" RhaetoRomance = Romansh,\n")
qlocaleh_temp_file.write(" Chewa = Nyanja,\n")
qlocaleh_temp_file.write(" Frisian = WesternFrisian,\n")
+ qlocaleh_temp_file.write(" Uigur = Uighur,\n")
qlocaleh_temp_file.write(" LastLanguage = " + language + "\n")
qlocaleh_temp_file.write(" };\n")
diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp
index 6a134695f9..5affaeb59f 100644
--- a/util/unicode/main.cpp
+++ b/util/unicode/main.cpp
@@ -540,6 +540,137 @@ static void initLineBreak()
}
+static QHash<QByteArray, QChar::Script> scriptMap;
+
+static void initScriptMap()
+{
+ struct Scrpt {
+ QChar::Script script;
+ const char *name;
+ } scripts[] = {
+ // general
+ { QChar::Script_Unknown, "Unknown" },
+ { QChar::Script_Inherited, "Inherited" },
+ { QChar::Script_Common, "Common" },
+ // pre-4.0
+ { 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_Hangul, "Hangul" },
+ { QChar::Script_Ethiopic, "Ethiopic" },
+ { QChar::Script_Cherokee, "Cherokee" },
+ { QChar::Script_CanadianAboriginal, "CanadianAboriginal" },
+ { QChar::Script_Ogham, "Ogham" },
+ { QChar::Script_Runic, "Runic" },
+ { QChar::Script_Khmer, "Khmer" },
+ { QChar::Script_Mongolian, "Mongolian" },
+ { QChar::Script_Hiragana, "Hiragana" },
+ { QChar::Script_Katakana, "Katakana" },
+ { QChar::Script_Bopomofo, "Bopomofo" },
+ { QChar::Script_Han, "Han" },
+ { QChar::Script_Yi, "Yi" },
+ { QChar::Script_OldItalic, "OldItalic" },
+ { QChar::Script_Gothic, "Gothic" },
+ { QChar::Script_Deseret, "Deseret" },
+ { QChar::Script_Tagalog, "Tagalog" },
+ { QChar::Script_Hanunoo, "Hanunoo" },
+ { QChar::Script_Buhid, "Buhid" },
+ { QChar::Script_Tagbanwa, "Tagbanwa" },
+ { QChar::Script_Coptic, "Coptic" },
+ // 4.0
+ { QChar::Script_Limbu, "Limbu" },
+ { QChar::Script_TaiLe, "TaiLe" },
+ { QChar::Script_LinearB, "LinearB" },
+ { QChar::Script_Ugaritic, "Ugaritic" },
+ { QChar::Script_Shavian, "Shavian" },
+ { QChar::Script_Osmanya, "Osmanya" },
+ { QChar::Script_Cypriot, "Cypriot" },
+ { QChar::Script_Braille, "Braille" },
+ // 4.1
+ { QChar::Script_Buginese, "Buginese" },
+ { QChar::Script_NewTaiLue, "NewTaiLue" },
+ { QChar::Script_Glagolitic, "Glagolitic" },
+ { QChar::Script_Tifinagh, "Tifinagh" },
+ { QChar::Script_SylotiNagri, "SylotiNagri" },
+ { QChar::Script_OldPersian, "OldPersian" },
+ { QChar::Script_Kharoshthi, "Kharoshthi" },
+ // 5.0
+ { QChar::Script_Balinese, "Balinese" },
+ { QChar::Script_Cuneiform, "Cuneiform" },
+ { QChar::Script_Phoenician, "Phoenician" },
+ { QChar::Script_PhagsPa, "PhagsPa" },
+ { QChar::Script_Nko, "Nko" },
+ // 5.1
+ { QChar::Script_Sundanese, "Sundanese" },
+ { QChar::Script_Lepcha, "Lepcha" },
+ { QChar::Script_OlChiki, "OlChiki" },
+ { QChar::Script_Vai, "Vai" },
+ { QChar::Script_Saurashtra, "Saurashtra" },
+ { QChar::Script_KayahLi, "KayahLi" },
+ { QChar::Script_Rejang, "Rejang" },
+ { QChar::Script_Lycian, "Lycian" },
+ { QChar::Script_Carian, "Carian" },
+ { QChar::Script_Lydian, "Lydian" },
+ { QChar::Script_Cham, "Cham" },
+ // 5.2
+ { QChar::Script_TaiTham, "TaiTham" },
+ { QChar::Script_TaiViet, "TaiViet" },
+ { QChar::Script_Avestan, "Avestan" },
+ { QChar::Script_EgyptianHieroglyphs, "EgyptianHieroglyphs" },
+ { QChar::Script_Samaritan, "Samaritan" },
+ { QChar::Script_Lisu, "Lisu" },
+ { QChar::Script_Bamum, "Bamum" },
+ { QChar::Script_Javanese, "Javanese" },
+ { QChar::Script_MeeteiMayek, "MeeteiMayek" },
+ { QChar::Script_ImperialAramaic, "ImperialAramaic" },
+ { QChar::Script_OldSouthArabian, "OldSouthArabian" },
+ { QChar::Script_InscriptionalParthian, "InscriptionalParthian" },
+ { QChar::Script_InscriptionalPahlavi, "InscriptionalPahlavi" },
+ { QChar::Script_OldTurkic, "OldTurkic" },
+ { QChar::Script_Kaithi, "Kaithi" },
+ // 6.0
+ { QChar::Script_Batak, "Batak" },
+ { QChar::Script_Brahmi, "Brahmi" },
+ { QChar::Script_Mandaic, "Mandaic" },
+ // 6.1
+ { QChar::Script_Chakma, "Chakma" },
+ { QChar::Script_MeroiticCursive, "MeroiticCursive" },
+ { QChar::Script_MeroiticHieroglyphs, "MeroiticHieroglyphs" },
+ { QChar::Script_Miao, "Miao" },
+ { QChar::Script_Sharada, "Sharada" },
+ { QChar::Script_SoraSompeng, "SoraSompeng" },
+ { QChar::Script_Takri, "Takri" },
+ // unhandled
+ { QChar::Script_Unknown, 0 }
+ };
+ Scrpt *p = scripts;
+ while (p->name) {
+ scriptMap.insert(p->name, p->script);
+ ++p;
+ }
+}
+
+
// Keep this one in sync with the code in createPropertyInfo
static const char *property_string =
"struct Properties {\n"
@@ -562,7 +693,7 @@ static const char *property_string =
" ushort wordBreakClass : 8; /* 4 used */\n"
" ushort sentenceBreakClass : 8; /* 4 used */\n"
" ushort lineBreakClass : 8; /* 6 used */\n"
- " ushort script : 8; /* 5 used */\n"
+ " ushort script : 8; /* 7 used */\n"
"};\n\n"
"Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4);\n"
"Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2);\n"
@@ -584,10 +715,6 @@ static const char *methods =
"Q_CORE_EXPORT LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4);\n"
"inline LineBreakClass lineBreakClass(QChar ch)\n"
"{ return lineBreakClass(ch.unicode()); }\n"
- "\n"
- "Q_CORE_EXPORT Script QT_FASTCALL script(uint ucs4);\n"
- "inline Script script(QChar ch)\n"
- "{ return script(ch.unicode()); }\n"
"\n";
static const int SizeOfPropertiesStruct = 20;
@@ -745,7 +872,7 @@ struct UnicodeData {
p.graphemeBreakClass = GraphemeBreak_Other;
p.wordBreakClass = WordBreak_Other;
p.sentenceBreakClass = SentenceBreak_Other;
- p.script = 0; // Common
+ p.script = QChar::Script_Unknown;
propertyIndex = -1;
excludedComposition = false;
}
@@ -1830,42 +1957,6 @@ static void readBlocks()
}
#endif
-static QList<QByteArray> scriptNames;
-static QList<int> scriptMap;
-
-static const char *specialScripts[] = {
- "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"
-};
-enum { specialScriptsCount = sizeof(specialScripts) / sizeof(const char *) };
-
static void readScripts()
{
qDebug("Reading Scripts.txt");
@@ -1876,13 +1967,6 @@ static void readScripts()
f.open(QFile::ReadOnly);
- int scriptsCount = specialScriptsCount;
- // ### preserve the old ordering (temporary)
- for (int i = 0; i < specialScriptsCount; ++i) {
- scriptNames.append(specialScripts[i]);
- scriptMap.append(i);
- }
-
while (!f.atEnd()) {
QByteArray line = f.readLine();
line.resize(line.size() - 1);
@@ -1914,57 +1998,17 @@ static void readScripts()
Q_ASSERT(ok);
}
- int scriptIndex = scriptNames.indexOf(scriptName);
- if (scriptIndex == -1) {
- scriptIndex = scriptNames.size();
- scriptNames.append(scriptName);
-
- // is the script alias for 'Common'?
- int s = specialScriptsCount;
- while (--s > 0) {
- if (scriptName == specialScripts[s])
- break;
- }
- scriptMap.append(s > 0 ? scriptsCount++ : 0);
- }
+ if (!scriptMap.contains(scriptName))
+ qFatal("Unhandled script property value: %s", scriptName.constData());
+ QChar::Script script = scriptMap.value(scriptName, QChar::Script_Unknown);
for (int codepoint = first; codepoint <= last; ++codepoint) {
UnicodeData &ud = UnicodeData::valueRef(codepoint);
- ud.p.script = scriptMap.at(scriptIndex);
+ ud.p.script = script;
}
}
}
-static QByteArray createScriptEnumDeclaration()
-{
- QByteArray declaration;
-
- declaration += "// See http://www.unicode.org/reports/tr24/tr24-5.html\n";
- declaration += "enum Script {\n Common";
-
- // output the ones with special processing first
- for (int i = 1; i < scriptNames.size(); ++i) {
- if (scriptMap.at(i) == 0)
- continue;
- declaration += ",\n ";
- declaration += scriptNames.at(i);
- }
- declaration += ",\n ScriptCount = Inherited";
-
- // output the ones that are an alias for 'Common'
- for (int i = 1; i < scriptNames.size(); ++i) {
- if (scriptMap.at(i) != 0)
- continue;
- declaration += ",\n ";
- declaration += scriptNames.at(i);
- declaration += " = Common";
- }
-
- declaration += "\n};\n\n";
-
- return declaration;
-}
-
#if 0
static void dump(int from, int to)
{
@@ -2214,7 +2258,7 @@ static QByteArray createPropertyInfo()
out += ", ";
out += QByteArray::number( p.lineBreakClass );
out += ", ";
-// " ushort script : 8; /* 5 used */\n"
+// " ushort script : 8; /* 7 used */\n"
out += QByteArray::number( p.script );
out += " },";
}
@@ -2263,11 +2307,7 @@ static QByteArray createPropertyInfo()
"{\n"
" return (LineBreakClass)qGetProp(ucs4)->lineBreakClass;\n"
"}\n"
- "\n"
- "Q_CORE_EXPORT Script QT_FASTCALL script(uint ucs4)\n"
- "{\n"
- " return (Script)qGetProp(ucs4)->script;\n"
- "}\n\n";
+ "\n";
return out;
}
@@ -2725,6 +2765,7 @@ int main(int, char **)
initWordBreak();
initSentenceBreak();
initLineBreak();
+ initScriptMap();
readUnicodeData();
readBidiMirroring();
@@ -2746,7 +2787,6 @@ int main(int, char **)
QByteArray compositions = createCompositionInfo();
QByteArray ligatures = createLigatureInfo();
QByteArray normalizationCorrections = createNormalizationCorrections();
- QByteArray scriptEnumDeclaration = createScriptEnumDeclaration();
QByteArray header =
"/****************************************************************************\n"
@@ -2837,7 +2877,6 @@ int main(int, char **)
f.write("#define UNICODE_DATA_VERSION "DATA_VERSION_STR"\n\n");
f.write("namespace QUnicodeTables {\n\n");
f.write(property_string);
- f.write(scriptEnumDeclaration);
f.write(grapheme_break_class_string);
f.write(word_break_class_string);
f.write(sentence_break_class_string);